你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G030C8T6跑马灯程序V0.2(四)

[复制链接]
STMCU小助手 发布时间:2022-10-12 16:30
基于RIBEE_02的开发板设计跑马灯驱动程序,25颗灯按蓝、绿、黄、红、白跑马点亮。

1.上芯片图与电路图,LED灯均串联1K电阻共地。

d69f86e0601942ca8dae37f93f2fa9c6.png
7f70c96a5c6244eface67f611e8cd691.png


2.晶振配置为内部晶振,配置外设GPIO为64MHZ

65240758b3314240a64365af77e1d2f3.png

3. 编写LED驱动动GPIO.H文件,定义结构体与枚举,宏定义GPIO.

  1. /* Define to prevent recursive inclusion -------------------------------------*/
  2. #ifndef __BEE_H
  3. #define __BEE_H

  4. /* Includes ------------------------------------------------------------------*/
  5. #include "stm32g0xx_hal.h"

  6. typedef struct
  7. {
  8.     uint8_t NUM;
  9. } HORSE_Struct;
  10. /*************  共25个灯跑马点亮   *************/
  11. typedef enum {
  12.     BLUE_B1= 1,       //蓝灯
  13.     GREEN_B2,         //绿灯
  14.     YELLOW_B10,       //黄灯
  15.     RED_B11,          //红灯
  16.     WHITE_B12,        //白灯
  17.     BLUE_B13,         //蓝灯
  18.     GREEN_B14,        //绿灯
  19.     YELLOW_B15,       //黄灯
  20.     RED_A8,           //红灯
  21.     WHITE_A9,         //白灯
  22.     BLUE_C6,          //蓝灯
  23.     GREEN_C7,         //绿灯
  24.     YELLOW_A10,       //黄灯
  25.     RED_A11,          //红灯
  26.     WHITE_A12,        //白灯
  27.     BLUE_D0,          //蓝灯
  28.     GREEN_D1,         //绿灯
  29.     YELLOW_D2,        //黄灯
  30.     RED_D3,           //红灯
  31.     WHITE_B3,         //白灯
  32.     BLUE_B4,          //蓝灯
  33.     GREEN_B6,         //绿灯
  34.     YELLOW_B7,        //黄灯
  35.     RED_B8,           //红灯
  36.     WHITE_B9,         //白灯
  37. } LEDEnum;
  38. /* Private defines -----------------------------------------------------------*/
  39. #define PA8_Pin GPIO_PIN_8
  40. #define PA8_GPIO_Port GPIOA
  41. #define PA8_High()   HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_SET)
  42. #define PA8_Low()    HAL_GPIO_WritePin(GPIOA, PA8_Pin, GPIO_PIN_RESET)

  43. #define PA9_Pin GPIO_PIN_9
  44. #define PA9_GPIO_Port GPIOA
  45. #define PA9_High()   HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_SET)
  46. #define PA9_Low()    HAL_GPIO_WritePin(GPIOA, PA9_Pin, GPIO_PIN_RESET)

  47. #define PA10_Pin GPIO_PIN_10
  48. #define PA10_GPIO_Port GPIOA
  49. #define PA10_High()   HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_SET)
  50. #define PA10_Low()    HAL_GPIO_WritePin(GPIOA, PA10_Pin, GPIO_PIN_RESET)

  51. #define PA11_Pin GPIO_PIN_11
  52. #define PA11_GPIO_Port GPIOA
  53. #define PA11_High()   HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_SET)
  54. #define PA11_Low()    HAL_GPIO_WritePin(GPIOA, PA11_Pin, GPIO_PIN_RESET)

  55. #define PA12_Pin GPIO_PIN_12
  56. #define PA12_GPIO_Port GPIOA
  57. #define PA12_High()   HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_SET)
  58. #define PA12_Low()    HAL_GPIO_WritePin(GPIOA, PA12_Pin, GPIO_PIN_RESET)

  59. #define PA13_Pin GPIO_PIN_13
  60. #define PA13_GPIO_Port GPIOA
  61. #define PA13_High()   HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_SET)
  62. #define PA13_Low()    HAL_GPIO_WritePin(GPIOA, PA13_Pin, GPIO_PIN_RESET)

  63. #define PA14_Pin GPIO_PIN_14
  64. #define PA14_GPIO_Port GPIOA
  65. #define PA14_High()   HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_SET)
  66. #define PA14_Low()    HAL_GPIO_WritePin(GPIOA, PA14_Pin, GPIO_PIN_RESET)

  67. #define PB1_Pin GPIO_PIN_1
  68. #define PB1_GPIO_Port GPIOB
  69. #define PB1_High()   HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_SET)
  70. #define PB1_Low()    HAL_GPIO_WritePin(GPIOB, PB1_Pin, GPIO_PIN_RESET)

  71. #define PB2_Pin GPIO_PIN_2
  72. #define PB2_GPIO_Port GPIOB
  73. #define PB2_High()   HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_SET)
  74. #define PB2_Low()    HAL_GPIO_WritePin(GPIOB, PB2_Pin, GPIO_PIN_RESET)

  75. #define PB3_Pin GPIO_PIN_3
  76. #define PB3_GPIO_Port GPIOB
  77. #define PB3_High()   HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_SET)
  78. #define PB3_Low()    HAL_GPIO_WritePin(GPIOB, PB3_Pin, GPIO_PIN_RESET)

  79. #define PB4_Pin GPIO_PIN_4
  80. #define PB4_GPIO_Port GPIOB
  81. #define PB4_High()   HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_SET)
  82. #define PB4_Low()    HAL_GPIO_WritePin(GPIOB, PB4_Pin, GPIO_PIN_RESET)

  83. #define PB6_Pin GPIO_PIN_6
  84. #define PB6_GPIO_Port GPIOB
  85. #define PB6_High()   HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_SET)
  86. #define PB6_Low()    HAL_GPIO_WritePin(GPIOB, PB6_Pin, GPIO_PIN_RESET)

  87. #define PB7_Pin GPIO_PIN_7
  88. #define PB7_GPIO_Port GPIOB
  89. #define PB7_High()   HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_SET)
  90. #define PB7_Low()    HAL_GPIO_WritePin(GPIOB, PB7_Pin, GPIO_PIN_RESET)

  91. #define PB8_Pin GPIO_PIN_8
  92. #define PB8_GPIO_Port GPIOB
  93. #define PB8_High()   HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_SET)
  94. #define PB8_Low()    HAL_GPIO_WritePin(GPIOB, PB8_Pin, GPIO_PIN_RESET)

  95. #define PB9_Pin GPIO_PIN_9
  96. #define PB9_GPIO_Port GPIOB
  97. #define PB9_High()   HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_SET)
  98. #define PB9_Low()    HAL_GPIO_WritePin(GPIOB, PB9_Pin, GPIO_PIN_RESET)

  99. #define PB10_Pin GPIO_PIN_10
  100. #define PB10_GPIO_Port GPIOB
  101. #define PB10_High()   HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_SET)
  102. #define PB10_Low()    HAL_GPIO_WritePin(GPIOB, PB10_Pin, GPIO_PIN_RESET)

  103. #define PB11_Pin GPIO_PIN_11
  104. #define PB11_GPIO_Port GPIOB
  105. #define PB11_High()   HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_SET)
  106. #define PB11_Low()    HAL_GPIO_WritePin(GPIOB, PB11_Pin, GPIO_PIN_RESET)

  107. #define PB12_Pin GPIO_PIN_12
  108. #define PB12_GPIO_Port GPIOB
  109. #define PB12_High()   HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_SET)
  110. #define PB12_Low()    HAL_GPIO_WritePin(GPIOB, PB12_Pin, GPIO_PIN_RESET)

  111. #define PB13_Pin GPIO_PIN_13
  112. #define PB13_GPIO_Port GPIOB
  113. #define PB13_High()   HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_SET)
  114. #define PB13_Low()    HAL_GPIO_WritePin(GPIOB, PB13_Pin, GPIO_PIN_RESET)

  115. #define PB14_Pin GPIO_PIN_14
  116. #define PB14_GPIO_Port GPIOB
  117. #define PB14_High()   HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_SET)
  118. #define PB14_Low()    HAL_GPIO_WritePin(GPIOB, PB14_Pin, GPIO_PIN_RESET)

  119. #define PB15_Pin GPIO_PIN_15
  120. #define PB15_GPIO_Port GPIOB
  121. #define PB15_High()   HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_SET)
  122. #define PB15_Low()    HAL_GPIO_WritePin(GPIOB, PB15_Pin, GPIO_PIN_RESET)

  123. #define PC6_Pin GPIO_PIN_6
  124. #define PC6_GPIO_Port GPIOC
  125. #define PC6_High()   HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_SET)
  126. #define PC6_Low()    HAL_GPIO_WritePin(GPIOC, PC6_Pin, GPIO_PIN_RESET)

  127. #define PC7_Pin GPIO_PIN_7
  128. #define PC7_GPIO_Port GPIOC
  129. #define PC7_High()   HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_SET)
  130. #define PC7_Low()    HAL_GPIO_WritePin(GPIOC, PC7_Pin, GPIO_PIN_RESET)

  131. #define PD0_Pin GPIO_PIN_0
  132. #define PD0_GPIO_Port GPIOD
  133. #define PD0_High()   HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_SET)
  134. #define PD0_Low()    HAL_GPIO_WritePin(GPIOD, PD0_Pin, GPIO_PIN_RESET)

  135. #define PD1_Pin GPIO_PIN_1
  136. #define PD1_GPIO_Port GPIOD
  137. #define PD1_High()   HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_SET)
  138. #define PD1_Low()    HAL_GPIO_WritePin(GPIOD, PD1_Pin, GPIO_PIN_RESET)

  139. #define PD2_Pin GPIO_PIN_2
  140. #define PD2_GPIO_Port GPIOD
  141. #define PD2_High()   HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_SET)
  142. #define PD2_Low()    HAL_GPIO_WritePin(GPIOD, PD2_Pin, GPIO_PIN_RESET)

  143. #define PD3_Pin GPIO_PIN_3
  144. #define PD3_GPIO_Port GPIOD
  145. #define PD3_High()   HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_SET)
  146. #define PD3_Low()    HAL_GPIO_WritePin(GPIOD, PD3_Pin, GPIO_PIN_RESET)

  147. /* USER CODE BEGIN Private defines */
  148. extern void BEE_GPIO_HORSE(void);
  149. /* USER CODE END Private defines */


  150. #endif /* __BEE_H */

  151. /****END OF FILE****/
复制代码

4.编写LED跑马灯GPIO.C文件,引用SWITCH--CASE语句。

  1. #include "BEE_GPIO.h"

  2. HORSE_Struct HORSE= {0};

  3. /* Private function prototypes --------25 LED HORSE RACE---------------------*/
  4. void BEE_GPIO_HORSE(void)
  5. {
  6.     HORSE.NUM++;
  7.     switch(HORSE.NUM)
  8.     {
  9.     case BLUE_B1   :
  10.         PB1_High();
  11.         PB2_Low();
  12.         PB10_Low();
  13.         PB11_Low();
  14.         PB12_Low();
  15.         PB13_Low();
  16.         PB14_Low();
  17.         PB15_Low();
  18.         PA8_Low();
  19.         PA9_Low();
  20.         PC6_Low();
  21.         PC7_Low();
  22.         PA10_Low();
  23.         PA11_Low();
  24.         PA12_Low();
  25.         PD0_Low();
  26.         PD1_Low();
  27.         PD2_Low();
  28.         PD3_Low();
  29.         PB3_Low();
  30.         PB4_Low();
  31.         PB6_Low();
  32.         PB7_Low();
  33.         PB8_Low();
  34.         PB9_Low();

  35.         break ;
  36.     case GREEN_B2   :
  37.         PB1_Low();
  38.         PB2_High();
  39.         break ;
  40.     case YELLOW_B10 :
  41.         PB2_Low();
  42.         PB10_High();
  43.         break ;
  44.     case RED_B11    :
  45.         PB10_Low();
  46.         PB11_High();
  47.         break ;
  48.     case WHITE_B12 :
  49.         PB11_Low();
  50.         PB12_High();
  51.         break ;
  52.     case BLUE_B13    :
  53.         PB12_Low();
  54.         PB13_High();
  55.         break ;
  56.     case GREEN_B14 :
  57.         PB13_Low();
  58.         PB14_High();
  59.         break ;
  60.     case YELLOW_B15 :
  61.         PB14_Low();
  62.         PB15_High();
  63.         break ;
  64.     case RED_A8   :
  65.         PB15_Low();
  66.         PA8_High();
  67.         break ;
  68.     case WHITE_A9 :
  69.         PA8_Low();
  70.         PA9_High();
  71.         break ;
  72.     case BLUE_C6    :
  73.         PA9_Low();
  74.         PC6_High();
  75.         break ;
  76.     case GREEN_C7 :
  77.         PC6_Low();
  78.         PC7_High();
  79.         break ;
  80.     case YELLOW_A10    :
  81.         PC7_Low();
  82.         PA10_High();
  83.         break ;
  84.     case RED_A11 :
  85.         PA10_Low();
  86.         PA11_High();
  87.         break ;
  88.     case WHITE_A12 :
  89.         PA11_Low();
  90.         PA12_High();
  91.         break ;
  92.     case BLUE_D0   :
  93.         PA12_Low();
  94.         PD0_High();
  95.         break ;
  96.     case GREEN_D1 :
  97.         PD0_Low();
  98.         PD1_High();
  99.         break ;
  100.     case YELLOW_D2    :
  101.         PD1_Low();
  102.         PD2_High();
  103.         break ;
  104.     case RED_D3 :
  105.         PD2_Low();
  106.         PD3_High();
  107.         break ;
  108.     case WHITE_B3    :
  109.         PD3_Low();
  110.         PB3_High();
  111.         break ;
  112.     case BLUE_B4:
  113.         PB3_Low();
  114.         PB4_High();
  115.         break ;
  116.     case GREEN_B6:
  117.         PB4_Low();
  118.         PB6_High();
  119.         break ;
  120.     case YELLOW_B7:
  121.         PB6_Low();
  122.         PB7_High();
  123.         break ;
  124.     case RED_B8:
  125.         PB7_Low();
  126.         PB8_High();
  127.         break ;
  128.     case WHITE_B9:
  129.         PB8_Low();
  130.         PB9_High();
  131.         HORSE.NUM  =         0 ;
  132.         break ;

  133.     default :
  134.         HORSE.NUM  =         0 ;
  135.         break ;//没有符合的条件即执行本default  非必须
  136.     }
  137. }
复制代码

5.在主程序WHILE()中编写跑马延时程序

  1. while (1)
  2.     {
  3.         HAL_Delay(300);//0.3S--控制跑马灯速度
  4.         BEE_GPIO_HORSE();
  5.     }
复制代码

————————————————
版权声明:米蜂科技

收藏 评论0 发布时间:2022-10-12 16:30

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版