硬件:
编程思路:
给对应的高电平led就不亮,给低电平就亮,换句话说,控制led的亮灭就是操作PE5或PB5这两个引脚,对这个引脚操作之前,我们要确定这个引脚的时钟、这个引脚的工作模式(输出还是输出,在本次实验中是推完输出),工作速度。全部设置完了,才能对这个引脚进行写高写低操作。
涉及的函数
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState) //对引脚时钟进行设置
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) //对对应的引脚、引脚的工作模式、引脚的工作速度进行设置
void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //将io口设置为高电平
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin) //将io口设置为低电平
void Init_led(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); // PB口时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); // PE口时钟使能
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // 设置为推完输出
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_5; //设置的是引脚5
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //工作频率是50MHz
GPIO_Init(GPIOB,&GPIO_InitStruct); // GPIOB IO口初始化
GPIO_Init(GPIOE,&GPIO_InitStruct); // GPIOE IO口初始化
}
int main(void)
{
Init_led();//led的系统初始化
delay_init();//延时初始化
while(1)
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);//设置引脚为高电平 led 不亮
GPIO_ResetBits(GPIOE,GPIO_Pin_5);//设置引脚为低电平 led 亮
delay_ms(500); // 延时500ms
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//设置引脚为低电平 led 亮
GPIO_SetBits(GPIOE,GPIO_Pin_5);//设置引脚为高电平 led 不亮
delay_ms(500);// 延时500ms
}
}