跑马灯
1.看原理图
IO口输出低电平,灯亮
IO口输出高电平,灯灭
2.GPIO的输出方式
推挽输出(上拉)
(推挽输出可以实现强高低电平的输出)
3.初始化函数配置几个基本的寄存器
注意:可以一次初始化一组IO的几个IO,前提是这些IO口的配置方式一样。用|隔开。
使用GPIO必须先使能相应的GPIO时钟。
4.配置寄存器使GPIO输出高电平或者低电平
GPIOx是组,GPIO_PIN是某个IO口
5.整体思路
以上参考正点原子教学材料整理而成
6.学习心得
需要一定的C语言结构体/位运算的知识。
对为什么要使用推挽中的上拉不理解:
1.在没有任何操作的情况下,STM32通用推挽输出模式的引脚默认低电平,也就是有电的状态。所以在配置的时候通常会先把引脚的电平设置拉高,让电路不产生电流。有电到没电这一过程也就是引脚电平从低到高的过程。(百度)
补充(转自CSDN博客)
1、IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定。
2、STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高电阻,做到低功耗。
3、STM32的IO管脚配置口默认为浮空输入,把选择权留给用户,这是一个很大的优势:一方面浮空输入确保不会出现用户不希望的默认电平(此时电平取决于用户的外围电路);另一方面降低了功耗,因为不管是上拉还是下拉都会有电流消耗。从另一个角度来看,不管I/O管脚的默认配置如何,还是需要在输出的管脚外加上拉或下拉,这是为了保证芯片上电期间和复位时输出的管脚始终处于已知的电平。
IO端口复位后处于浮空状态,也就是其电平状态由外围电路决定。
2、STM32上电复位瞬间I/O口的电平状态默认是浮空输入,因此是高电阻,做到低功耗。
3、STM32的IO管脚配置口默认为浮空输入,把选择权留给用户,这是一个很大的优势:一方面浮空输入确保不会出现用户不希望的默认电平(此时电平取决于用户的外围电路);另一方面降低了功耗,因为不管是上拉还是下拉都会有电流消耗。从另一个角度来看,不管I/O管脚的默认配置如何,还是需要在输出的管脚外加上拉或下拉,这是为了保证芯片上电期间和复位时输出的管脚始终处于已知的电平。