[STM32F1] STM32F103ZET6【标准库函数开发】--点亮LED

[复制链接]
736|1
 楼主| 王小琪 发表于 2020-11-4 20:03 | 显示全部楼层 |阅读模式
1.硬件连接
767615fa297ba65a65.png

2.设计思路
要点亮LED0和LED1就要把PB5和PE5设置为低电平;
要熄灭LED0和LED1就要把PB5和PE5设置为高电平;


3.知识储备:STM32有四种输出模式和四种输入模式
314115fa297ebc2932.png

4.编写代码
4.1方便阅读,宏定义
  1. #define LED0 PBout(5)// 宏定义LED0为GPIOB.5输出
  2. #define LED1 PEout(5)// 宏定义LED1为GPIOE.5输出
  3. void LED_Init(void);//初始化


4.2IO初始化(时钟使能、配置输入、选择io口、配置速度、高低电平初始化等)
  1. //LED.C   
  2. //LED IO初始化
  3. void LED_Init(void)
  4. {
  5. GPIO_InitTypeDef  GPIO_InitStructure;        
  6. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);         //使能PB,PE端口时钟
  7.        
  8. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                                 //LED0-->PB.5 端口配置
  9. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  10. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
  11. GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIOB.5
  12. GPIO_SetBits(GPIOB,GPIO_Pin_5);                                                 //PB.5 输出高

  13. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;                             //LED1-->PE.5 端口配置
  14. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  15. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
  16. GPIO_Init(GPIOE, &GPIO_InitStructure);                                           //根据设定参数初始化GPIOE.5
  17. GPIO_SetBits(GPIOE,GPIO_Pin_5);                                                  //PE.5 输出高
  18. }


4.3编写主函数
  1. //主函数
  2. int main(void)
  3. {       
  4.         delay_init();            //延时函数初始化          
  5.         LED_Init();                          //初始化与LED连接的硬件接口
  6.         while(1)
  7.         {
  8.                 LED0=0;//点亮LED0
  9.                 LED1=1;//熄灭LED1
  10.                 delay_ms(300);         //延时300ms
  11.                 LED0=1;//熄灭LED0
  12.                 LED1=0;//点亮LED1
  13.                 delay_ms(300);        //延时300ms
  14.         }
  15. }
上面的函数就可以让LED0,LED1持续的闪烁,在while(1)里面循环下去。
捉虫天师 发表于 2020-11-4 21:30 | 显示全部楼层
标准库挺好用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

585

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部