找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 6303|回復(fù): 4
收起左側(cè)

TIM—全彩LED燈控制 簡(jiǎn)單STM32實(shí)驗(yàn)程序

[復(fù)制鏈接]
ID:508689 發(fā)表于 2019-4-10 14:12 | 顯示全部樓層 |閱讀模式
制作出來的實(shí)物圖如下:

狀態(tài) 演示

狀態(tài)   演示

代碼截圖

代碼截圖


單片機(jī)源程序如下:
  1. #include "./color_led/bsp_color_led.h"


  2. /**
  3.   * @brief  配置COLOR_TIMx復(fù)用輸出PWM時(shí)用到的I/O
  4.   * @param  無
  5.   * @retval 無
  6.   */
  7. static void COLOR_TIMx_GPIO_Config(void)
  8. {
  9.   GPIO_InitTypeDef GPIO_InitStructure;

  10.   /* GPIO clock enable */
  11.   RCC_APB2PeriphClockCmd(COLOR_TIM_GPIO_CLK, ENABLE);

  12.           /*IO設(shè)置*/
  13.         COLOR_GPIO_REMAP_FUN();
  14.   
  15.   /* 配置LED燈用到的引腳 */
  16.         //紅
  17.   GPIO_InitStructure.GPIO_Pin =  COLOR_RED_TIM_LED_PIN ;        
  18.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                    // 復(fù)用推挽輸出
  19.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  20.   GPIO_Init(COLOR_RED_TIM_LED_PORT, &GPIO_InitStructure);
  21.         
  22.         //綠
  23.         GPIO_InitStructure.GPIO_Pin =  COLOR_GREEN_TIM_LED_PIN ;
  24.   GPIO_Init(COLOR_GREEN_TIM_LED_PORT, &GPIO_InitStructure);
  25.         
  26.         //藍(lán)
  27.         GPIO_InitStructure.GPIO_Pin =  COLOR_BLUE_TIM_LED_PIN ;
  28.   GPIO_Init(COLOR_BLUE_TIM_LED_PORT, &GPIO_InitStructure);

  29. }

  30. /**
  31.   * @brief  配置COLOR_TIMx輸出的PWM信號(hào)的模式,如周期、極性
  32.   * @param  無
  33.   * @retval 無
  34.   */
  35. static void COLOR_TIMx_Mode_Config(void)
  36. {
  37.         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
  38.         TIM_OCInitTypeDef  TIM_OCInitStructure;                                                                                                                                                               
  39.         
  40.         /* 設(shè)置TIM CLK 時(shí)鐘 */
  41.   COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, ENABLE);                                         //使能COLOR_TIMx時(shí)鐘

  42.   /* 基本定時(shí)器配置 */                 
  43.   TIM_TimeBaseStructure.TIM_Period = 255;                                                                 //當(dāng)定時(shí)器從0計(jì)數(shù)到255,即為256次,為一個(gè)定時(shí)周期
  44.   TIM_TimeBaseStructure.TIM_Prescaler = 1999;                                                                    //設(shè)置預(yù)分頻
  45.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                        //設(shè)置時(shí)鐘分頻系數(shù):不分頻(這里用不到)
  46.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;          //向上計(jì)數(shù)模式
  47.   TIM_TimeBaseInit(COLOR_TIMx, &TIM_TimeBaseStructure);

  48.   /* PWM模式配置 */
  49.         TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                                            //配置為PWM模式1
  50.   TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;        //使能輸出
  51.   TIM_OCInitStructure.TIM_Pulse = 0;                                                                                                          //設(shè)置初始PWM脈沖寬度為0        
  52.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;            //當(dāng)定時(shí)器計(jì)數(shù)值小于CCR_Val時(shí)為低電平

  53.         //使能通道和預(yù)裝載
  54.   COLOR_RED_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);                                                                 
  55.   COLOR_RED_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);                                                
  56.   
  57.         //使能通道和預(yù)裝載
  58.   COLOR_GREEN_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);                                                                                 
  59.   COLOR_GREEN_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);                                                
  60.   
  61.         //使能通道和預(yù)裝載
  62.   COLOR_BLUE_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);                                                                                 
  63.   COLOR_BLUE_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);                                                

  64.   TIM_ARRPreloadConfig(COLOR_TIMx, ENABLE);                                                                                                         //使能COLOR_TIMx重載寄存器ARR

  65.   /* COLOR_TIMx enable counter */
  66.   TIM_Cmd(COLOR_TIMx, ENABLE);                                                                                                   //使能定時(shí)器               
  67. }

  68. /**
  69.   * @brief  COLOR_TIMx 呼吸燈初始化
  70.   *         配置PWM模式和GPIO
  71.   * @param  無
  72.   * @retval 無
  73.   */
  74. void COLOR_TIMx_LED_Init(void)
  75. {
  76.         COLOR_TIMx_GPIO_Config();
  77.         COLOR_TIMx_Mode_Config();        
  78. }

  79. //停止pwm輸出
  80. void COLOR_TIMx_LED_Close(void)
  81. {
  82.         SetColorValue(0,0,0);
  83.         TIM_Cmd(COLOR_TIMx, DISABLE);                                                                           //失能定時(shí)器                                                
  84.         COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, DISABLE);         //失能定時(shí)器時(shí)鐘
  85.         
  86.         //關(guān)閉LED燈
  87.         GPIO_SetBits(COLOR_RED_TIM_LED_PORT,COLOR_RED_TIM_LED_PIN);
  88.         GPIO_SetBits(COLOR_GREEN_TIM_LED_PORT,COLOR_GREEN_TIM_LED_PIN);
  89.         GPIO_SetBits(COLOR_BLUE_TIM_LED_PORT,COLOR_BLUE_TIM_LED_PIN);
  90. }

  91. /**
  92.   * @brief  設(shè)置RGB LED的顏色
  93.         * @param  rgb:要設(shè)置LED顯示的顏色值格式RGB888
  94.   * @retval 無
  95.   */
  96. void SetRGBColor(uint32_t rgb)
  97. {
  98.         //根據(jù)顏色值修改定時(shí)器的比較寄存器值
  99.         COLOR_TIMx->COLOR_RED_CCRx = (uint8_t)(rgb>>16);                        //R
  100.         COLOR_TIMx->COLOR_GREEN_CCRx = (uint8_t)(rgb>>8);          //G     
  101.         COLOR_TIMx->COLOR_BLUE_CCRx = (uint8_t)rgb;                                                //B
  102. }


  103. /**
  104.   * @brief  設(shè)置RGB LED的顏色
  105.         * @param  r\g\b:要設(shè)置LED顯示的顏色值
  106.   * @retval 無
  107.   */
  108. void SetColorValue(uint8_t r,uint8_t g,uint8_t b)
  109. {
  110.         //根據(jù)顏色值修改定時(shí)器的比較寄存器值
  111.         COLOR_TIMx->COLOR_RED_CCRx = r;        
  112.         COLOR_TIMx->COLOR_GREEN_CCRx = g;               
  113.         COLOR_TIMx->COLOR_BLUE_CCRx = b;        
  114. }
  115. /*********************************************END OF FILE**********************/
復(fù)制代碼
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @brief   全彩LED燈例程

  7.   ******************************************************************************
  8.   */
  9.   
  10. #include "stm32f10x.h"
  11. #include "./color_led/bsp_color_led.h"


  12. #define SOFT_DELAY() Delay(0xFFFFFF);

  13. void Delay(__IO u32 nCount);

  14. /**
  15.   * @brief  主函數(shù)
  16.   * @param  無
  17.   * @retval 無
  18.   */
  19. int main(void)
  20. {                        
  21.         /* 初始化LED燈 */
  22.         COLOR_TIMx_LED_Init();

  23.         while(1)
  24.         {
  25.                 //顯示各種顏色
  26.                 SetRGBColor(0x8080ff);
  27.                 SOFT_DELAY();
  28.                
  29.                 SetRGBColor(0xff8000);
  30.                 SOFT_DELAY();
  31.                
  32.                 SetRGBColor(0xffc90e);
  33.                 SOFT_DELAY();
  34.                
  35.                 SetColorValue(181,230,29);
  36.                 SOFT_DELAY();

  37.                 SetColorValue(255,128,64);
  38.                 SOFT_DELAY();               

  39.         }               
  40. }


  41. void Delay(__IO uint32_t nCount)         //簡(jiǎn)單的延時(shí)函數(shù)
  42. {
  43.         for(; nCount != 0; nCount--);
  44. }
  45. /*********************************************END OF FILE**********************/

復(fù)制代碼


所有資料51hei提供下載:
TIM—全彩LED燈.7z (180.64 KB, 下載次數(shù): 56)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:708043 發(fā)表于 2020-3-13 23:53 | 顯示全部樓層
哈哈,不錯(cuò),踏破鐵鞋無覓處,得來全不費(fèi)工夫
回復(fù)

使用道具 舉報(bào)

ID:686417 發(fā)表于 2020-3-16 16:00 | 顯示全部樓層
好東西  希望有機(jī)會(huì)可以試一試  lz好人
回復(fù)

使用道具 舉報(bào)

ID:709978 發(fā)表于 2020-3-17 11:21 | 顯示全部樓層
好東西  希望有機(jī)會(huì)
回復(fù)

使用道具 舉報(bào)

ID:826544 發(fā)表于 2020-10-7 15:06 | 顯示全部樓層
我一摸一樣照著寫的 為社么我的燈不亮啊   
function "COLOR_TIMx_Mode_Config" was declared but never referenced
有這個(gè)警告
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表