当前位置:   article > 正文

stm32F103指南者使用标准库进行分别点亮RGB三灯操作_stm32控制rgb三色led

stm32控制rgb三色led

一、步骤:

1、使能RCC时钟;

2、配置GPIO引脚;

3、控制引脚电平。

二、代码:

//bsp_led.h

  1. #define __BSP_LED_H
  2. #include"stm32f10x.h"
  3. #define LED_R_GPIO_PIN GPIO_Pin_5
  4. #define LED_G_GPIO_PIN GPIO_Pin_0
  5. #define LED_B_GPIO_PIN GPIO_Pin_1
  6. #define LED_RGB_GPIO_PORT GPIOB
  7. #define LED_RGB_GPIO_CLK RCC_APB2Periph_GPIOB
  8. #define ON 1
  9. #define OFF 0
  10. #define LED_R(a) if(a)GPIO_ResetBits(LED_RGB_GPIO_PORT, LED_R_GPIO_PIN);else GPIO_SetBits(LED_RGB_GPIO_PORT, LED_R_GPIO_PIN);
  11. #define LED_G(a) if(a)GPIO_ResetBits(LED_RGB_GPIO_PORT, LED_G_GPIO_PIN);else GPIO_SetBits(LED_RGB_GPIO_PORT, LED_G_GPIO_PIN);
  12. #define LED_B(a) if(a)GPIO_ResetBits(LED_RGB_GPIO_PORT, LED_B_GPIO_PIN);else GPIO_SetBits(LED_RGB_GPIO_PORT, LED_B_GPIO_PIN);
  13. void LED_GPIO_Config(void);
  14. #endif //__BSP_LED_H

//bsp_led.c

  1. #include"bsp_led.h"
  2. void LED_GPIO_Config(void)
  3. {
  4. GPIO_InitTypeDef GPIO_InitStruct;
  5. RCC_APB2PeriphClockCmd(LED_RGB_GPIO_CLK, ENABLE);
  6. GPIO_InitStruct.GPIO_Pin = LED_R_GPIO_PIN;
  7. GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  8. GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  9. GPIO_Init(LED_RGB_GPIO_PORT, &GPIO_InitStruct);
  10. }
  11. //点亮其他两灯操作类似

//main.c

  1. #include"stm32f10x.h"
  2. #include"bsp_led.h"
  3. void Delay(uint32_t d)
  4. {
  5. for(;d!=0;d--);
  6. }
  7. int main()
  8. {
  9. int ans=50;
  10. LED_GPIO_Config();
  11. while(ans--)
  12. {
  13. //GPIO_SetBits(LED_RGB_GPIO_PORT, LED_R_GPIO_PIN);
  14. LED_R(ON);
  15. Delay(0xFFFFF);
  16. //GPIO_ResetBits(LED_RGB_GPIO_PORT, LED_R_GPIO_PIN);
  17. LED_R(OFF);
  18. Delay(0xFFFFF);
  19. }
  20. GPIO_SetBits(LED_RGB_GPIO_PORT, LED_R_GPIO_PIN);
  21. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/685679
推荐阅读
相关标签
  

闽ICP备14008679号