6.1、GPIO相关寄存器
6.2、跑马灯的硬件连接
6.3、编写跑马灯程序
6.1、GPIO相关寄存器
可以参考中文数据手册,如下所示:
据前述,GPIO 共有8种工作方式(4种输入、4种输出)、以及三种工作速度,本次学习目的是通过函数直接调用寄存器来实现各种工作,每组IO口所包含的寄存器为:
换言之,本次学习的是寄存器版本的STM32,相对比而言库函数版本,寄存器版本更加快速,这是因为函数是直接调用寄存器,而非通过调用库函数来实现功能。
6.2、跑马灯硬件连接
略
6.3、跑马灯程序编写
主要步骤:1、使能IO口时钟。配置寄存器RCC_APB2ENR
2、初始化IO口模式。配置寄存器GPIOx_CRH/CRL
3、操作IO口,输出高低电平。配置寄存器GPIOX_ODR或者BSRR/BRR。
(1)、复制工程文件
而后根据上述的主要步骤,配置RCC_APB2ENR寄存器,(即为APB2外设使能时钟寄存器)其详细参数如下所示:
由于根据芯片原理图可知,LED0和LED1分别连接PB5和PE5.也就是在GPIOB和GPIOE两端口上,参照上表,我们只需要使能“位3”、“位6”即可。
(2)、新建工程等如上一节一样
(2)、在添加路径,源文件后,查看寄存器定义,寄存器定义统一被添加在该库文件中,如下所示:
PS:为方便地调用库函数,“Ctrl+H”即可调出搜索窗口进行搜索,
(3)、据前述,需要控制的是位3与位6(将位3与位6设置为1),我们希望在控制位3与位6的同时能不影响其他的位,所以总的思路是:将位3和位6分别与1进行或运算,而其他位则与0或运算。如下图所示:
(4)、接着通过寄存器配置GPIO口状态,其中GPIOx_CRH用于配置8~15位,GPIOx_CRL用于配置0~7位,由于我们需要配置的是GPIOB.5和GPIOE.5,所以选用的是GPIOx_CRL函数,如下:
需要设置5号引脚为推挽输出,并且输出速度为50MHz,查上述数据手册中的表可知,需要设置CNF5为00,以及MODE5为11,也就是23、22、21、20位为:0011,
(5)、编写源文件码
(6)、据此编写主程序代码
(7)、编译后下载到单片机