[STM32F1] STM32F103流水灯的实现(库函数版)

[复制链接]
956|0
 楼主| abotomson 发表于 2023-5-29 15:00 | 显示全部楼层 |阅读模式


  1. #include "stm32f10x.h"
  2. #include "stm32f10x_gpio.h"
  3. #define PCL GPIOC->BRR //使PC输出低电平
  4. #define PCH GPIOC->BSRR //使PC输出高电平
  5. void delayms(unsigned int ms);//延时函数
  6. void led(uint8_t a,uint8_t b);//LED显示程序a表示第几个,b表示灭0或亮1

  7. int main(void)
  8. {
  9. uint8_t n;
  10. GPIO_InitTypeDef  GPIO_InitStructure;

  11.     /* 使能LED对应GPIO的Clock时钟 */
  12.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  //使能LED1灯对应的GPIOC管脚时钟

  13.     /* 初始化LED的GPIO管脚,配置为推挽输出 */  //设置端口
  14.     GPIO_InitStructure.GPIO_Pin = 0xFFFF;//GPIO_Pin_2|GPIO_Pin_3 ;   //LED灯对应的GPIO_Pin_2和3端口
  15. //设置对端口的模式
  16.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置为 推挽(Push-Pull)输出
  17.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//输出速率选择50MHZ(2,10,50三种速率)
  18.     GPIO_Init(GPIOC, &GPIO_InitStructure);//调用GPIO初始化函数
  19.     while (1)

  20. {
  21. for(n=0;n<8;n++)
  22. {
  23. led(n,1);//第几个亮
  24. delayms(500);//延时
  25. }
  26. }   
  27. }

  28. void delayms(unsigned int ms)//延时函数
  29. {
  30. unsigned char a,b;
  31. while(ms--)
  32.         for(b=254;b>0;b--)
  33.             for(a=13;a>0;a--);
  34. }
  35. void led(uint8_t a,uint8_t b)//LED显示程序
  36. {
  37. PCL=0xffff;
  38. if(b){PCH=1<<a;}
  39. else {PCL=1<<a;}
  40. }


您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

1956

帖子

1

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