【STM32-野火】(三)使用寄存器点亮LED
(一).由于stm32比51要更加高级,所以配置时不仅有输入还有输出,此时由配置高低寄存器决定端口,要配合材料看。
对应上图写配置GPIO为输出的代码 (操作寄存器内存点亮LED)。
代码如下,操作流程:
1.首先打开相应GPIO口的复位时钟,只有在时钟工作的时候,配置的相应GPIO才会工作
2.其次配置GPIO,在手册中找到对应的真实地址,将其配置为1(意思是配置IO口为输出,由于既有输入也有输出,所以在用时一定要配置)
3.最后再将LED所在ODR配置为0,使其点亮
所以即使没有第三步也可点亮灯,因为复位时自动清零,也就是相当于置0了
(二)拓展:
置位(符号):|=
清除(符号):&=
(三)GPIO功能框图讲解,IO口与芯片内部工作原理
- 推挽输出(P-Mos管负责)
由上图可知:如果ODR输入为0,反向为1,上面截止,下面会导通,输出为0V。(上通为推(灌电流),下通为挽(拉电流))
2.开漏输出**(不接上拉电阻时,只能输出低电平,N-MOS负责)**
- 输入
综上:
代码(寄存器控制):
.h文件应为:(从大地址推小地址,一步步找到要控制的寄存器和GPIO外设)
main函数里应为:
把清零操作注释掉,灯亮。
补充:还可以使用