久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6128|回復: 4
打印 上一主題 下一主題
收起左側

TIM—全彩LED燈控制 簡單STM32實驗程序

[復制鏈接]
跳轉到指定樓層
樓主
制作出來的實物圖如下:


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


  2. /**
  3.   * @brief  配置COLOR_TIMx復用輸出PWM時用到的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設置*/
  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;                    // 復用推挽輸出
  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.         //藍
  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信號的模式,如周期、極性
  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.         /* 設置TIM CLK 時鐘 */
  41.   COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, ENABLE);                                         //使能COLOR_TIMx時鐘

  42.   /* 基本定時器配置 */                 
  43.   TIM_TimeBaseStructure.TIM_Period = 255;                                                                 //當定時器從0計數到255,即為256次,為一個定時周期
  44.   TIM_TimeBaseStructure.TIM_Prescaler = 1999;                                                                    //設置預分頻
  45.   TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;                        //設置時鐘分頻系數:不分頻(這里用不到)
  46.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;          //向上計數模式
  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;                                                                                                          //設置初始PWM脈沖寬度為0        
  52.   TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;            //當定時器計數值小于CCR_Val時為低電平

  53.         //使能通道和預裝載
  54.   COLOR_RED_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);                                                                 
  55.   COLOR_RED_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);                                                
  56.   
  57.         //使能通道和預裝載
  58.   COLOR_GREEN_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);                                                                                 
  59.   COLOR_GREEN_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);                                                
  60.   
  61.         //使能通道和預裝載
  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);                                                                                                   //使能定時器               
  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);                                                                           //失能定時器                                                
  84.         COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, DISABLE);         //失能定時器時鐘
  85.         
  86.         //關閉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  設置RGB LED的顏色
  93.         * @param  rgb:要設置LED顯示的顏色值格式RGB888
  94.   * @retval 無
  95.   */
  96. void SetRGBColor(uint32_t rgb)
  97. {
  98.         //根據顏色值修改定時器的比較寄存器值
  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  設置RGB LED的顏色
  105.         * @param  r\g\b:要設置LED顯示的顏色值
  106.   * @retval 無
  107.   */
  108. void SetColorValue(uint8_t r,uint8_t g,uint8_t b)
  109. {
  110.         //根據顏色值修改定時器的比較寄存器值
  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**********************/
復制代碼
  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  主函數
  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)         //簡單的延時函數
  42. {
  43.         for(; nCount != 0; nCount--);
  44. }
  45. /*********************************************END OF FILE**********************/

復制代碼


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


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:708043 發表于 2020-3-13 23:53 | 只看該作者
哈哈,不錯,踏破鐵鞋無覓處,得來全不費工夫
回復

使用道具 舉報

板凳
ID:686417 發表于 2020-3-16 16:00 | 只看該作者
好東西  希望有機會可以試一試  lz好人
回復

使用道具 舉報

地板
ID:709978 發表于 2020-3-17 11:21 | 只看該作者
好東西  希望有機會
回復

使用道具 舉報

5#
ID:826544 發表于 2020-10-7 15:06 | 只看該作者
我一摸一樣照著寫的 為社么我的燈不亮啊   
function "COLOR_TIMx_Mode_Config" was declared but never referenced
有這個警告
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲视频一区 | www.操com| 天天躁日日躁狠狠躁白人 | 国产精品久久久久久久久婷婷 | 国产成人福利 | 美女视频. | 成人av一区二区三区 | 成人在线免费观看视频 | 麻豆国产精品777777在线 | 久久久久久国产精品 | 国产亚洲精品精品国产亚洲综合 | 欧美国产精品一区二区 | 欧美久久精品一级黑人c片 91免费在线视频 | 国产在线精品一区 | 亚洲精品久久久久久久久久久 | 老司机午夜性大片 | 黄色大片免费看 | 欧美日韩亚洲视频 | 一区日韩 | 免费精品视频在线观看 | 亚洲美女网站 | 精品av| 国产成人一区二区三区久久久 | 在线观看国产 | 亚洲精品久久视频 | 免费的黄色片子 | 欧洲一级黄 | 久久日本| 天色综合网 | 精品国产乱码久久久 | 国产日韩精品视频 | 日韩一区中文字幕 | 国产一区二区久久 | 中文字幕国产一区 | 狠狠干五月天 | 淫片一级国产 | 国产精品久久久久久久久久久免费看 | 我爱操| 国产一级淫片免费视频 | 美国av毛片 | 国产精品美女久久久久aⅴ国产馆 |