|
制作出來的實物圖如下:
02.jpg (123.29 KB, 下載次數: 62)
下載附件
狀態 演示
2019-4-10 14:11 上傳
01.jpg (129.82 KB, 下載次數: 51)
下載附件
代碼截圖
2019-4-10 14:11 上傳
單片機源程序如下:
- #include "./color_led/bsp_color_led.h"
- /**
- * @brief 配置COLOR_TIMx復用輸出PWM時用到的I/O
- * @param 無
- * @retval 無
- */
- static void COLOR_TIMx_GPIO_Config(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- /* GPIO clock enable */
- RCC_APB2PeriphClockCmd(COLOR_TIM_GPIO_CLK, ENABLE);
- /*IO設置*/
- COLOR_GPIO_REMAP_FUN();
-
- /* 配置LED燈用到的引腳 */
- //紅
- GPIO_InitStructure.GPIO_Pin = COLOR_RED_TIM_LED_PIN ;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 復用推挽輸出
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(COLOR_RED_TIM_LED_PORT, &GPIO_InitStructure);
-
- //綠
- GPIO_InitStructure.GPIO_Pin = COLOR_GREEN_TIM_LED_PIN ;
- GPIO_Init(COLOR_GREEN_TIM_LED_PORT, &GPIO_InitStructure);
-
- //藍
- GPIO_InitStructure.GPIO_Pin = COLOR_BLUE_TIM_LED_PIN ;
- GPIO_Init(COLOR_BLUE_TIM_LED_PORT, &GPIO_InitStructure);
- }
- /**
- * @brief 配置COLOR_TIMx輸出的PWM信號的模式,如周期、極性
- * @param 無
- * @retval 無
- */
- static void COLOR_TIMx_Mode_Config(void)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_OCInitTypeDef TIM_OCInitStructure;
-
- /* 設置TIM CLK 時鐘 */
- COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, ENABLE); //使能COLOR_TIMx時鐘
- /* 基本定時器配置 */
- TIM_TimeBaseStructure.TIM_Period = 255; //當定時器從0計數到255,即為256次,為一個定時周期
- TIM_TimeBaseStructure.TIM_Prescaler = 1999; //設置預分頻
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; //設置時鐘分頻系數:不分頻(這里用不到)
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上計數模式
- TIM_TimeBaseInit(COLOR_TIMx, &TIM_TimeBaseStructure);
- /* PWM模式配置 */
- TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; //配置為PWM模式1
- TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //使能輸出
- TIM_OCInitStructure.TIM_Pulse = 0; //設置初始PWM脈沖寬度為0
- TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //當定時器計數值小于CCR_Val時為低電平
- //使能通道和預裝載
- COLOR_RED_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);
- COLOR_RED_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);
-
- //使能通道和預裝載
- COLOR_GREEN_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);
- COLOR_GREEN_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);
-
- //使能通道和預裝載
- COLOR_BLUE_TIM_OCxInit(COLOR_TIMx, &TIM_OCInitStructure);
- COLOR_BLUE_TIM_OCxPreloadConfig(COLOR_TIMx, TIM_OCPreload_Enable);
- TIM_ARRPreloadConfig(COLOR_TIMx, ENABLE); //使能COLOR_TIMx重載寄存器ARR
- /* COLOR_TIMx enable counter */
- TIM_Cmd(COLOR_TIMx, ENABLE); //使能定時器
- }
- /**
- * @brief COLOR_TIMx 呼吸燈初始化
- * 配置PWM模式和GPIO
- * @param 無
- * @retval 無
- */
- void COLOR_TIMx_LED_Init(void)
- {
- COLOR_TIMx_GPIO_Config();
- COLOR_TIMx_Mode_Config();
- }
- //停止pwm輸出
- void COLOR_TIMx_LED_Close(void)
- {
- SetColorValue(0,0,0);
- TIM_Cmd(COLOR_TIMx, DISABLE); //失能定時器
- COLOR_TIM_APBxClock_FUN(COLOR_TIM_CLK, DISABLE); //失能定時器時鐘
-
- //關閉LED燈
- GPIO_SetBits(COLOR_RED_TIM_LED_PORT,COLOR_RED_TIM_LED_PIN);
- GPIO_SetBits(COLOR_GREEN_TIM_LED_PORT,COLOR_GREEN_TIM_LED_PIN);
- GPIO_SetBits(COLOR_BLUE_TIM_LED_PORT,COLOR_BLUE_TIM_LED_PIN);
- }
- /**
- * @brief 設置RGB LED的顏色
- * @param rgb:要設置LED顯示的顏色值格式RGB888
- * @retval 無
- */
- void SetRGBColor(uint32_t rgb)
- {
- //根據顏色值修改定時器的比較寄存器值
- COLOR_TIMx->COLOR_RED_CCRx = (uint8_t)(rgb>>16); //R
- COLOR_TIMx->COLOR_GREEN_CCRx = (uint8_t)(rgb>>8); //G
- COLOR_TIMx->COLOR_BLUE_CCRx = (uint8_t)rgb; //B
- }
- /**
- * @brief 設置RGB LED的顏色
- * @param r\g\b:要設置LED顯示的顏色值
- * @retval 無
- */
- void SetColorValue(uint8_t r,uint8_t g,uint8_t b)
- {
- //根據顏色值修改定時器的比較寄存器值
- COLOR_TIMx->COLOR_RED_CCRx = r;
- COLOR_TIMx->COLOR_GREEN_CCRx = g;
- COLOR_TIMx->COLOR_BLUE_CCRx = b;
- }
- /*********************************************END OF FILE**********************/
復制代碼- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @brief 全彩LED燈例程
- ******************************************************************************
- */
-
- #include "stm32f10x.h"
- #include "./color_led/bsp_color_led.h"
- #define SOFT_DELAY() Delay(0xFFFFFF);
- void Delay(__IO u32 nCount);
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- /* 初始化LED燈 */
- COLOR_TIMx_LED_Init();
- while(1)
- {
- //顯示各種顏色
- SetRGBColor(0x8080ff);
- SOFT_DELAY();
-
- SetRGBColor(0xff8000);
- SOFT_DELAY();
-
- SetRGBColor(0xffc90e);
- SOFT_DELAY();
-
- SetColorValue(181,230,29);
- SOFT_DELAY();
- SetColorValue(255,128,64);
- SOFT_DELAY();
- }
- }
- void Delay(__IO uint32_t nCount) //簡單的延時函數
- {
- for(; nCount != 0; nCount--);
- }
- /*********************************************END OF FILE**********************/
復制代碼
所有資料51hei提供下載:
TIM—全彩LED燈.7z
(180.64 KB, 下載次數: 56)
2019-4-10 16:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|