STM32学习(4)-蜂鸣器,按键,C语言(位,关键字,结构体),寄存器地址名称映射分析
一.蜂鸣器程序的编写
接10K的电阻作用:STM32复位时引脚处于浮空状态,引脚电平具有不确定性,如果不接10K的电阻,蜂鸣器引脚电平的跳变会造成蜂鸣器响。
程序实现:
(1)使能蜂鸣器的I/O时钟。
(2)初始化I/O模式(推挽输出)
(3)控制I/O输出高低电平。
程序编写参考LED小灯程序。
二.按键输入程序的编写
2.1 如何准确识别按键按下的次数
思路:增加判断前一次按键按下之后是否松开的标志位,当前一次按键松开后才能判断此次按键按下有效。标志位在初始化时需要使用static关键字。
2.2 static关键字
(1)static申明的局部变量,存储在静态存储区。
(2)它在函数调用结束后,不会被释放,它的值会一直保留下来,可以说具有记忆功能。
(3)并且它只被初始化一次,不会被重新初始化。如下图所示:
输出结果始终为1。 输出结果不断增加。
2.3 准备识别按键次数的其中一个方法
model参数为0时不支持连续按,必须满足上一次按键松开才会判断本次按键是否按下,可以准确识别按键次数。model参数为1时支持连续按。
三.C语言复习
3.1位操作
或1用来置1, 与0用来清零。
3.2define宏定义关键词
3.3 ifdef条件编译
3.4 extern变量申明
3.5 typedef类型别名
3.6 结构体
4.MDK中寄存器地址名称映射分析
GPIO的寄存器CRL的地址为GPIOA_BASE+CRL的偏移量。CRL的偏移量通过查找STM32中文参考手册,如图所示。
具体映射过程
|