STM32学习笔记GPIO端口篇.doc

STM32学习笔记GPIO端口篇.doc

ID:56826049

大小:18.00 KB

页数:3页

时间:2020-07-15

STM32学习笔记GPIO端口篇.doc_第1页
STM32学习笔记GPIO端口篇.doc_第2页
STM32学习笔记GPIO端口篇.doc_第3页
资源描述:

《STM32学习笔记GPIO端口篇.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、STM32学习笔记—之GPIO端口篇 最近刚开始学习STM32,所以从最基本的GPIO开始学起;首先看看STM32的datasheet上对GPIO口的简单介绍:每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH),两个32位数据寄存器(GPIOx_IDR,GPIOx_ODR),一个32位置位/复位寄存器(GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)。  GPIO端口的每个位可以由软件分别配置成多种模式。每个I/O端口位可以自由编程,然而I/0端口寄存器必须按32位字被访问(不允许半字或字节访

2、问)。GPIOx_BSRR和GPIOx_BRR寄存器允许对任何GPIO寄存器的读/更改的独立访问;这样,在读和更改访问之间产生IRQ时不会发生危险。   端口位配置CNFx[1:0]=xxb,MODEx[1:0]=xxb再看GPIO功能很强大:1.通用I/O(GPIO):最最基本的功能,可以驱动LED、可以产生PWM、可以驱动蜂鸣器等等;2.单独的位设置或位清除:方便软体作业,程序简单。端口配置好以后只需GPIO_SetBits(GPIOx,GPIO_Pin_x)就可以实现对GPIOx的pinx位为高电平;3.外部中断/唤醒线:端口必须配置成输入模式时,所有端口都有外部中断能力;4.复用

3、功能(AF):复用功能的端口兼有IO功能等。复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式:(CNFx[1:0]=01b,MODEx[1:0]=00b)。5.软件重新映射I/O复用功能:为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成。这时,复用功能就不再映射到它们的原始引脚上了;6.GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。 GPIO基本设置GPIOMode_TypeDefGPIOmode定义及偏移地址GPIO_Mode_AIN=0x0,

4、    //模拟输入 GPIO_Mode_IN_FLOATING=0x04,//悬空输入 GPIO_Mode_IPD=0x28,   //下拉输入 GPIO_Mode_IPU=0x48,   //上拉输入 GPIO_Mode_Out_OD=0x14,//开漏输出 GPIO_Mode_Out_PP=0x10, //推挽输出 GPIO_Mode_AF_OD=0x1C,  //开漏复用 GPIO_Mode_AF_PP=0x18   //推挽复用 GPIO输入输出速度选择:typedefenum{ GPIO_Speed_10MHz=1, GPIO_Speed_2MHz, GPIO_Speed_5

5、0MHz}GPIOSpeed_TypeDef; #defineIS_GPIO_SPEED(SPEED)((SPEED==GPIO_Speed_10MHz)

6、

7、(SPEED==GPIO_Speed_2MHz)

8、

9、 (SPEED==GPIO_Speed_50MHz))做一个GPIO输出的试验当I/O端口被配置为推挽模式输出时:输出寄存器上的0激活N-MOS,而输出寄存器上的1将激活P-MOS。用这段程序实现:GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;intmain(void){#ifdefDEBUG debug();#endif  /*设置系

10、统时钟*/ RCC_Configuration();    /*嵌套中断设置*/ NVIC_Configuration();  /*激活GPIOCclock*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);  /*ConfigurePC.04,PC.05,PC.06andPC.07asOutputpush-pull*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4

11、GPIO_Pin_5

12、GPIO_Pin_6

13、GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed=GPI

14、O_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOC,&GPIO_InitStructure);  while(1) {   /*本试验仅能实现LED1亮、熄功能*/   GPIO_SetBits(GPIOC,GPIO_Pin_4);//设置PC.04pin为高电平,点亮LED1   Delay();   GPIO_ResetBit

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

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

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