专题四GPIO利用库函数进行初始化及练习

专题四GPIO利用库函数进行初始化及练习

ID:42590736

大小:77.34 KB

页数:4页

时间:2019-09-18

专题四GPIO利用库函数进行初始化及练习_第1页
专题四GPIO利用库函数进行初始化及练习_第2页
专题四GPIO利用库函数进行初始化及练习_第3页
专题四GPIO利用库函数进行初始化及练习_第4页
资源描述:

《专题四GPIO利用库函数进行初始化及练习》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、专题四GPIO利用库函数进行初始化及练习1、开发板硬件电路1)Led电路:图1开发板上led连接电路2)按键电路图2开发板上按键电路3)蜂鸣器电路图3开发板上蜂鸣器电路从上面的硬件电路可以看到,stm32芯片的GPIOB组高8位连接了led灯,当PA8-PA15中任一个端口是低电平,就令其对应的led灯点亮。GPIOD组的PD2端口使能led灯的数据锁存器,当PD2是高电平,stm32芯片管脚的状态立即反应到锁存器Q输出上。Stm32芯片的PA0和PA8、PC1和PC2连接了按键,当查询到这些管脚是低电平,就表明按键被按下了。St

2、m32芯片的PA2连接了蜂鸣器,当PA2是高电平,会令蜂鸣器响。1、关于led、按键、蜂鸣器的初始化现在我们对上面硬件电路中的GPIO进行初始化,初始化包含两个方面:一是使能设备时钟,二是设置工作模式。连接按键的GPIO端口肯定是工作在输入方式啦,而连接led和蜂鸣器的GPIO端口肯定是工作在输出方式啦。1)led的初始化GPIO_InitTypeDefGPIO_InitStructure;voidLed_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

3、GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8

4、GPIO_Pin_9

5、GPIO_Pin_10

6、GPIO_Pin_11

7、GPIO_Pin_12

8、GPIO_Pin_13

9、GPIO_Pin_14

10、GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);RCC_APB2PeriphCl

11、ockCmd(RCC_APB2Periph_GPIOD,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;GPIO_Init(GPIOD,&GPIO_InitStructure);}2)按键的初始化voidKey_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0

12、GPIO_Pin_8;GPIO_InitStructure.GPIO_Mo

13、de=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1

14、GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOC,&GPIO_InitStructure);}1)蜂鸣器的初始化voidBe

15、ep_Init(void){RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);}3、初始化完毕后的应用练习1)单个led灯的点亮。2)单个led

16、灯的闪烁。3)跑马灯;4)流水灯。5)蜂鸣器响;6)根据按键,进行上述任务切换4、延时函数的书写。1)简单延时函数voidDelay(u32nCount)//延时子函数{for(;nCount!=0;nCount--);}//0x8ffff2)时钟滴答延时/*如果使用加了后缀的.s启动文件,或者main主函数中书写了SystemInit()语句,滴答时钟的工作频率是72/8=9MHz,*/VoidSysTick_Init(void){SysTick->LOAD=9E6;//1s时间到,如果要定义1ms则初装值改为9E3SysTic

17、k->CTRL=3;//开启滴答定时器及其中断}voidDelay_ns(u32nTime)//我们须要的廷时函数{TimingDelay=nTime;//把廷时值赋值给TimingDelay;while(TimingDelay!=0);//等待计

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。