系列文章目录
用寄存器的方式驱动GPIO
一、用标准外设库改写GPIO程序
GPIO(通用输入输出引脚)
1》STM32中GPIO是按组划分 GPIOA........GPIOF
每组最多16个引脚 GPIOA0........GPIOA15
2》八种输入输出模式
1,输入浮空
既没有上拉电阻,也没有下拉电阻,输入空闲时,读到的是上一次的状态
2,输入上拉
有上拉电阻,输入空闲时,读到的是高电平
3,输入下拉
有下拉电阻,输入空闲时,读到的是低电平
4,模拟输入
既没有上拉,也没有下拉,不经过施密特触发器
5,开漏输出
没有P-mos ,不能输出高电平
6,推挽式输出
有P-mos,既能输出高电平,也能输出低电平
3》最大速度-----电平翻转的速度
注意:复用,使用ST公司添加的片上外设通过GPIO引脚与芯片外通讯,需要使用复用功能
二、使用步骤
1.用标准外设库改写GPIO程序
功能:利用STM32控制LED灯的亮和灭
2.寄存器编程步骤:
1、打开GPIOC的时钟
RCC->APB2ENR |=1<<4;
2、将GPIOC8配置成推挽输出,输出速度2MHZ
GPIOC->CRH &=~0x0f;
GPIOC->CRH |=0x02;
3、关闭LED(配置程序)
GPIOC->ODR |=(1<<8);
4、在主程序中打开LED
void LED_OPEN(void)
{
//开灯
GPIOC->ODR &=~(1<<8);
}
3.标准外设库编程步骤:
打开GPIOC的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
将GPIOC8配置成推挽输出,输出速度2MHZ
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6;
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_2MHz;
GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_Init(GPIOC,&GPIO_InitStruct);
关闭LED(配置程序)
GPIO_SetBits(GPIOC, GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);
在主程序中打开LED
GPIO_ResetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_7|GPIO_Pin_6);