STM32学习笔记——点亮led

硬件:

编程思路:

给对应的高电平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
  }
}

猜你喜欢

转载自www.cnblogs.com/wuhoudezhenyu/p/11795842.html