下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 时不会发生危险。 端口位配置 CNFx1:0=xxb,MODEx1: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 端口被配置成浮空输入模式:(CNFx1:0=01b,MODEx1:0=00b)。5.软件重新映射I/O复用功能:为了使不同器件封装的外设I/O 功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成。这时,复用功能就不再映射到它们的原始引脚上了;6.GPIO锁定机制:主要针对复位设定的,当某端口位lock后,复位后将不改变的此端口的位配置。GPIO基本设置GPIOMode_TypeDef GPIO mode定义及偏移地址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输入输出速度选择:typedef enum GPIO_Speed_10MHz = 1, GPIO_Speed_2MHz, GPIO_Speed_50MHz
5、 GPIOSpeed_TypeDef;#define IS_GPIO_SPEED(SPEED) (SPEED = GPIO_Speed_10MHz) | (SPEED = GPIO_Speed_2MHz) | (SPEED = GPIO_Speed_50MHz)做一个GPIO输出的试验当I/O 端口被配置为推挽模式输出时:输出寄存器上的0 激活N-MOS,而输出寄存器上的1 将激活P-MOS。用这段程序实现:GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;int main(void)#ifdef DEBUG debug();#endif /* 设
6、置系统时钟 */ RCC_Configuration(); /* 嵌套中断设置*/ NVIC_Configuration(); /* 激活GPIOC clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /* Configure PC.04, PC.05, PC.06 and PC.07 as Output push-pull */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStruct
7、ure.GPIO_Speed = GPIO_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.04 pin为高电平,点亮LED1 Delay(); GPIO_ResetBits(GPIOC, GPIO_Pin_4); /设置PC.04 pin为低电平,熄灭LED1 Delay(); 做一个GPIO输入的试验
8、:以EK-STM32F中LCDdemo做例子 这个试验中把GPIO的PD.04做为按键输入,当下降沿来临时触发。LCDdemo中的例程如下:首先配置按键PD.03, PD.04为按键输入接口。void Button_Config(void) GPIO_InitTypeDef GPIO_InitStructure; /* Enable GPIOD clock */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE); /* Configure PD.03, PD.04 as output push-pull */ GPIO_InitStruc
9、ture.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 ; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOD, &GPIO_InitStructure);下面为按键作用是启动外部中断GPIO_EXTILineConfig(GPIO_PortSourceGPIOD, GPIO_PinSource3); EXTI_InitStructure.EXTI_Line = EXTI_Line3; /设定外部中断3 EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; /设定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公务员(乡镇街道单位)考前冲刺试题解析及答案(湖南岳阳)
- 电视台节目制片人节目创新与收益效果绩效评定表
- 环保技术研发工程师环保科技领域绩效考评表
- 小学主题班会课件之绿色生活小卫士,共筑美好家园
- 智能家电销售经理KPI考核表
- 小学主题班会课件:健康生活从小做起
- 2026年种草直达618投放手册
- IT技术工程师考评表
- 电子信息技术设备安装与调试方案
- 影楼服务营销流程规范
- 人教版(2025新版)七年级下册英语:寒假课内预习重点知识默写练习
- 2024年电力交易员(高级工)职业鉴定理论考试题库(单选题、多选题、判断题)
- 食材配送服务投标方案(干货类和调料)(技术方案)
- DL∕T 5370-2017 水电水利工程施工通 用安全技术规程
- 犬猫超声介导膀胱穿刺技术规范
- 2023集装箱冷板式液冷数据中心技术规范
- 产业园运营方案
- 先天性肥大性幽门狭窄护理查房
- NB-T 47013.15-2021 承压设备无损检测 第15部分:相控阵超声检测
- 食堂餐饮配送投标方案
- 公司违规经营投资责任追究制度培训考试
评论
0/150
提交评论