STM32 GPIO 的配置与使用
2013-01-23 15:07
169 查看
最近正在学习STM32,之前一直在用51和AVR单片机,都是八位机,第一次接触32位机,虽然是第一次接触但是根据经验无外乎就是那些东西,配置寄存器,驱动单片机工作。STM32的寄存器相比于51和avr来说可以说不是一个数量级上,由于太多,所以刚开始接触的时候对它的配置并不能得心应手,但是ST公司想到的了这点,他们自己做了一个库,在这个库中把各个寄存器都配置好了,并且做好了各种API函数,用户调用库中的函数,并且配置到相应的各个参数就可以快速的完成对STM32的配置,这样不仅降低了STM32的学习门槛还降低了它的开发成本。
学习一款单片机首先要从点灯开始:
STM32的GPIO(输入输出I/O)有八种配置模式对应定义在头文件中:
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
对GPIO 的配置主要分成以下几个步骤:
①配置GPIO的始终使能
②配置GPIO的输入输出模式
③选择引脚
④配置GPIO的翻转速率(输出时考虑,输入不用考虑)
⑤初始化以上四步 GPIO_Init()
其中ST已经讲②③④封装在 GPIO_InitTypeDef 结构体中了,在使用时我们只需要调用这个结构体就行了
View Code
学习一款单片机首先要从点灯开始:
STM32的GPIO(输入输出I/O)有八种配置模式对应定义在头文件中:
GPIO_Mode_AIN 模拟输入
GPIO_Mode_IN_FLOATING 浮空输入
GPIO_Mode_IPD 下拉输入
GPIO_Mode_IPU上拉输入
GPIO_Mode_Out_OD 开漏输出
GPIO_Mode_Out_PP 推挽输出
GPIO_Mode_AF_OD 复用开漏输出
GPIO_Mode_AF_PP 复用推挽输出
对GPIO 的配置主要分成以下几个步骤:
①配置GPIO的始终使能
②配置GPIO的输入输出模式
③选择引脚
④配置GPIO的翻转速率(输出时考虑,输入不用考虑)
⑤初始化以上四步 GPIO_Init()
其中ST已经讲②③④封装在 GPIO_InitTypeDef 结构体中了,在使用时我们只需要调用这个结构体就行了
View Code
/* *copyright(c) 2013.01.17 *All rights reserved * *文件名称:STM32_LED *当前版本:1.0 *作者: 郑春雨 *邮箱地址:zhengchunyu_1989@sina.com *完成日期:2013/01/17 */ #include "stm32f10x.h" #define RCC_KEY1 RCC_APB2Periph_GPIOA #define KEY1 GPIO_Pin_0 #define RCC_KEY2 RCC_APB2Periph_GPIOC #define KEY2 GPIO_Pin_13 #define RCC_KEY3 RCC_APB2Periph_GPIOA #define KEY3 GPIO_Pin_8 #define RCC_KEY4 RCC_APB2Periph_GPIOD #define KEY4 GPIO_Pin_3 GPIO_InitTypeDef GPIO_InitStructure;//定义结构体,GPIO的配置信息 void delay(void) { u16 count,t; for(count=0;count<10000;count++) { for(t=0;t<1000;t++); } } void init_Periph_Config(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF,ENABLE);//使能GPIO时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//配置端口输出模式输出推挽 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//选择引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//配置速率 GPIO_Init(GPIOF,&GPIO_InitStructure);//初始化GPIO /*KEY1*/ RCC_APB2PeriphClockCmd(RCC_KEY1,ENABLE);//使能KEY1时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//配置端口输入上拉 GPIO_InitStructure.GPIO_Pin = KEY1;//选择引脚 //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//配置速率 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIO /*KEY2*/ RCC_APB2PeriphClockCmd(RCC_KEY2,ENABLE);//使能GPIO时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//配置端口输入上拉 GPIO_InitStructure.GPIO_Pin = KEY2;//选择引脚 //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//配置速率 GPIO_Init(GPIOC,&GPIO_InitStructure);//初始化GPIO /*KEY3*/ RCC_APB2PeriphClockCmd(RCC_KEY3,ENABLE);//使能GPIO时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//配置端口输入上拉 GPIO_InitStructure.GPIO_Pin = KEY3;//选择引脚 //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//配置速率 GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIO /*KEY4*/ RCC_APB2PeriphClockCmd(RCC_KEY4,ENABLE);//使能GPIO时钟 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;//配置端口输入上拉 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//选择引脚 //GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;//配置速率 GPIO_Init(GPIOD,&GPIO_InitStructure);//初始化GPIO } int main(void) { init_Periph_Config(); GPIO_ResetBits(GPIOF,GPIO_Pin_All);//点亮4个LED while(1) { if(!GPIO_ReadInputDataBit(GPIOA,KEY1)) //按键1按下 { GPIO_SetBits(GPIOF,GPIO_Pin_6);//LED1灭 } else GPIO_ResetBits(GPIOF,GPIO_Pin_6);//LED1亮 if(!GPIO_ReadInputDataBit(GPIOC,KEY2)) //按键2按下 { GPIO_SetBits(GPIOF,GPIO_Pin_7); //LED2灭 } else GPIO_ResetBits(GPIOF,GPIO_Pin_7);//LED2亮 if(!GPIO_ReadInputDataBit(GPIOA,KEY3)) //按键3按下 { GPIO_SetBits(GPIOF,GPIO_Pin_8); //LED3灭 } else GPIO_ResetBits(GPIOF,GPIO_Pin_8);//LED3亮 if(!GPIO_ReadInputDataBit(GPIOD,KEY4)) //按键4按下 { GPIO_SetBits(GPIOF,GPIO_Pin_9); // LED4灭 } else GPIO_ResetBits(GPIOF,GPIO_Pin_9);// LED4亮 } }
相关文章推荐
- STM32中对GPIO的配置与使用
- STM32单片机在Keil5下仿真的问题解决及GPIO口初始化、使用
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STM32 HAL库 GPIO配置
- STM32 GPIO 寄存器配置
- STM32的GPIO输入输出模式配置
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- STM32之中断与事件---一个使用GPIO作为外部中断的示例
- STM32的GPIO—快速IO的使用与讲解
- STM32 GPIO 配置之ODR, BSRR, BRR 详解
- STM32 GPIO口模式配置
- 关于STM32的GPIO模式配置
- STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK)
- stm32 SPI NSS引脚的使用配置
- STM32F0xx_GPIO配置详细过程
- 关于STM32 PB3 PB4 如何设置成普通GPIO的配置
- STM32 外部GPIO中断配置
- 高通使用/system/bin/r读取msm8916的gpio配置
- STM32小笔记(一) GPIO口的配置
- STM32的IO口的8种配置(GPIO)