当前位置: 首页 > news >正文

莞城网站建设深圳市中心

莞城网站建设,深圳市中心,河北盛通公路建设有限公司网站,网站素材 下载文章目录 实验资料一、对寄存器的理解1.通俗认识寄存器2.深入了解寄存器#xff08;1#xff09;端口配置低寄存器#xff08;配置0到7引脚的寄存器#xff09;#xff08;2#xff09;端口配置高寄存器#xff08;配置8到15引脚#xff09; 3.GPIO口的功能描述 二、配… 文章目录 实验资料一、对寄存器的理解1.通俗认识寄存器2.深入了解寄存器1端口配置低寄存器配置0到7引脚的寄存器2端口配置高寄存器配置8到15引脚 3.GPIO口的功能描述 二、配置寄存器点亮流水灯1.配置寄存器1时钟设置2配置端口寄存器的输入输出模式3配置端口输出数据寄存器 2.完整代码3.proteus仿真4.STM32实际效果 三、将PC13的自带灯也引入流水灯1.添加的代码2.完整代码3.proteus仿真4.STM32实际效果 四、总结五、参考资料 实验资料 链接https://pan.baidu.com/s/1tYno7wmj11_bh1-UgL8HTQ?pwdo1hk 提取码o1hk 一、对寄存器的理解 1.通俗认识寄存器 首先我们来看一张图。 试想如果没有寄存器要控制8个LED灯的亮灭那么我们需要8个开关一对一进行控制。扳到ON控制灯的亮。扳到OFF控制灯的灭。而单片机中控制的东西太多太多用开关来控制的话至少需要成百上千个开关显然这是不明智的。 因此我们引入“寄存器”顾名思义寄存器应当是用来寄存东西的。而在单片机中的寄存器就是用来寄存二进制数的。在上面的实例中我们仅需一个8位寄存器就可以实现对这8个LED的控制。我们拨动开关相当于往寄存器里写数据我们观察的开关的状态相当于读取寄存器的数值。因此一个8位寄存器可以理解成8个小开关组成。 我们查阅资料可知寄存器通常是由晶体管组成它的体积微乎其微非常适合在CPU中寄存数据。 2.深入了解寄存器 我们已经知道单片机中有很多寄存器。就相当于有很多组“开关”。那么我们如何来管理这些“开关”呢因此我们可以利用寄存器的符号名字和地址。 下图是与I/O口相关的寄存器 **注意STM32单片机中的寄存器是32位的。有些寄存器没有用高16位寄存器比如端口输出数据寄存器**但是不管哪款单片机道理都是相通的。 下表是STM32F10xxx的寄存地址分布情况 STM32C8T6芯片共有48个引脚 具体功能如下 我们可以看出GPIOA/B都有从0到15都是16个引脚。 在GPIO配置寄存器中每个引脚的模式由4位进行配置16个端口就需要64位。 1端口配置低寄存器配置0到7引脚的寄存器 ①CNF:configure。配置对应端口的输入输出模式。 ②MODE配置对应端口的输出速度。 2端口配置高寄存器配置8到15引脚 思考为什么GPIOx_CRH的起始地址会偏移了4个字节32位而GPIOx_CRL却没有 这是因为GPIOx_CRH恰好接在GPIOx_CRL后面GPIOx_CRL恰好占了32位。 3.GPIO口的功能描述 在STM32中GPIO通用输入输出接口通常是与APB2Advanced Peripheral Bus 2即高级外设总线关联是APB2的外设。 二、配置寄存器点亮流水灯 1.配置寄存器 框起来的是要用的寄存器的地址。 1时钟设置 由上面我们知道GPIO口是APB2总线的外设。故我们在手册中要去查找APB2的外设时钟使能寄存器进行设置。 观察到时钟配置是置1打开置0关闭。 因为本次实验要同时用到三个端口要配置三个时钟那我就不客气了我直接打开GPIOA、B、C三个口的时钟。 RCC-APB2ENR0x0000001C; //配置三个端口的时钟2配置端口寄存器的输入输出模式 以配置GPIOA2引脚为例 GPIOA-CRL0x00000300;//配置GPIOA2的输入输出模式3配置端口输出数据寄存器 ODROutputDataRegister GPIOA-ODR0x00000000; //低电平点亮2.完整代码 #include stm32f10x.h // Device header #include Delay.hint main() {//配置三个口的时钟RCC-APB2ENR0x0000001C; //给GPOIA、B、C口配置时钟//配置GPIOA2口的输出模式及输出电平GPIOA-CRL0x00000300; //使用GPIOA2引脚//GPIOA-ODR0x00000000; //GPIOA2引脚低电平点亮GPIOA-ODR0x00000004; //GPIOA2引脚高电平熄灭//配置GPIOB12口的输出模式及输出电平GPIOB-CRH0x00030000; //使用GPIOB12引脚//GPIOB-ODR0x00000000; //GPIOB12引脚低电平点亮GPIOB-ODR0x00001000; //GPIOB12引脚高电平熄灭//配置GPIOC15口的输出模式及输出电平GPIOC-CRH0x30000000; //使用GPIOC15引脚//GPIOC-ODR0x00000000; //GPIOC15引脚低电平点亮GPIOC-ODR0x00008000; //GPIOc15引脚高电平熄灭while(1){GPIOA-ODR0x00000000; //GPIOA2引脚低电平点亮Delay_s(1);GPIOA-ODR0x00000004; //GPIOA2引脚高电平熄灭GPIOB-ODR0x00000000; //GPIOB12引脚低电平点亮Delay_s(1);GPIOB-ODR0x00001000; //GPIOB12引脚高电平熄灭GPIOC-ODR0x00000000; //GPIOC15引脚低电平点亮Delay_s(1);GPIOC-ODR0x00008000; //GPIOc15引脚高电平熄灭} } 3.proteus仿真 4.STM32实际效果 2024年5月5日001 与预期结果一致。 三、将PC13的自带灯也引入流水灯 太简单了仍然去手册里查找GPIOC13相应寄存器的值进行配置加上几行代码不就OK了 1.添加的代码 注意这两者的端口输出模式须同时配置不然前面配置的会被覆盖导致只配置成功后面配置的。 //配置GPIOC13口和GPIOC15口的输出模式及输出电平GPIOC-CRH0x30300000; //使用GPIOC13和15引脚//GPIOC-ODR0x00000000; //GPIOC13和15引脚低电平点亮GPIOC-ODR0x0000A000; //GPIOC13和15仍然保持高电平GPIOC-ODR0x00008000; //GPIOC13引脚低电平点亮GPIOC15仍然保持高电平Delay_s(1);GPIOC-ODR0x0000A000; //GPIOC13和GPIOC15引脚高电平熄灭2.完整代码 #include stm32f10x.h // Device header #include Delay.hint main() {//配置三个口的时钟RCC-APB2ENR0x0000001C; //给GPOIA、B、C口配置时钟//配置GPIOA2口的输出模式及输出电平GPIOA-CRL0x00000300; //使用GPIOA2引脚//GPIOA-ODR0x00000000; //GPIOA2引脚低电平点亮GPIOA-ODR0x00000004; //GPIOA2引脚高电平熄灭//配置GPIOB12口的输出模式及输出电平GPIOB-CRH0x00030000; //使用GPIOB12引脚//GPIOB-ODR0x00000000; //GPIOB12引脚低电平点亮GPIOB-ODR0x00001000; //GPIOB12引脚高电平熄灭//配置GPIOC13口和GPIOC15口的输出模式及输出电平GPIOC-CRH0x30300000; //使用GPIOC13和15引脚//GPIOC-ODR0x00000000; //GPIOC13和15引脚低电平点亮GPIOC-ODR0x0000A000; //GPIOC13和15仍然保持高电平while(1){GPIOA-ODR0x00000000; //GPIOA2引脚低电平点亮Delay_s(1);GPIOA-ODR0x00000004; //GPIOA2引脚高电平熄灭GPIOB-ODR0x00000000; //GPIOB12引脚低电平点亮Delay_s(1);GPIOB-ODR0x00001000; //GPIOB12引脚高电平熄灭GPIOC-ODR0x00008000; //GPIOC13引脚低电平点亮GPIOC15仍然保持高电平Delay_s(1);GPIOC-ODR0x0000A000; //GPIOC13和GPIOC15引脚高电平熄灭GPIOC-ODR0x00002000; //GPIOC15引脚低电平点亮GPIOC13仍然保持高电平Delay_s(1);GPIOC-ODR0x0000A000; //GPIOC13和GPIOC15引脚高电平熄灭} } 3.proteus仿真 4.STM32实际效果 2024年5月2日002 与预期结果一致。 四、总结 做完实验之后我发现通过使用寄存器的方式点亮流水灯是比较底层的方法也是比较笨的方法。但是它能让我们更深刻地理解STM32单片机中寄存器大致有哪些对应的位置又在哪。 通过本实验一步一步自己配置要用的寄存器数据其实挺有意思的。当在同时使用GPIOC15和PC15端口时我一开始是一个一个端口去配置模式的发现只有后面配置那个能亮最后仔细检查发现这两者得同时配置否则后面配置的会覆盖前面配置的。 本人才疏学浅仍然有一处不太明白就是我Proteus仿真的时候为啥灯亮灭得那么快而在板子上实验的时候又是符合预期的。希望各位大佬不吝赐教。 五、参考资料 1.https://www.bilibili.com/video/BV1Lr4y137Yx/?spm_id_from333.337.search-card.all.clickvd_sourcef8a9b6d51762562d444c27daa5c18d81 2.https://www.bilibili.com/video/BV1th411z7sn/?p5spm_id_from333.880.my_history.page.click
http://www.zqtcl.cn/news/679816/

相关文章:

  • 什么叫网站地图百度竞价排名费用
  • 企业网站建设顾问wordpress如何用API采集
  • win7网站后台无法编辑vr网站建设
  • 做头发个人网站制作素材dw中做网站的步骤
  • 学校网站做几级等保网页制作与维护
  • 十堰外贸网站建设松滋做网站
  • 网站导航条青浦徐泾网站建设
  • 厦门网站建设一般多少钱店铺域名是什么意思
  • 网站关键词搜索排名怎么做雅奇小蘑菇做网站好不好用
  • 手机网站案例建设网站地图素材
  • 企业网站制作比较好的如何设计一个网页首页代码
  • 维护网站成本网站建设进度图
  • asp.net做织梦网站设计手机网站建设
  • 江苏省住房和城乡建设局网站首页北京大型网站制作公司
  • 网站改版工作方案网站设计技能培训
  • 佳木斯市网站建设淄博网站开发招聘
  • 学习软件的网站先备案先建网站
  • 建立网站 知乎常州网站制作机构
  • 洛阳建设网站上海高端室内设计事务所
  • 做高清图的网站wordpress分类自定义文字
  • 创建站点如何做网站如何利用分类信息网站做推广
  • wordpress 拍卖插件找文网优化的技术团队
  • 建站素材网自助餐火锅网站建设
  • 企业型网站建设方案农村电商网站设计与发展现状
  • 建站快车凡科企业网站建设合同(一)
  • 阜平网站建设在广州做seo找哪家公司
  • 怎么做农家乐联盟网站六安建设机械网站
  • 网站开发行业标准江苏网站开发公司
  • 服装技术支持东莞网站建设如何加强企业网站建设论文
  • 中英双语网站怎么做深圳勘察设计协会