40.4 单色呼吸灯实验 首先以单色呼吸灯工程为例,其核心的驱动代码分别位于 bsp_breathing.c 和 bsp_breathing.h 文件中,可根据应用需要移植这些文件。 40.4.1 编程要点 1) 初始化 PWM 输出通道,初始化 PWM 工作模式; 2) 计算获取 PWM 数据表; 3) 编写中断服务函数,在中断服务函数根据 PWM 数据表切换比较寄存器的值; 40.4.2 代码分析 1. LED 灯硬件相关宏定义 为方便迁移代码适应其它硬件设计,实验中把硬件相关的部分使用宏定义到 bsp_breathing.h 文件中,使用不同硬件设计时,修改该文件即可,见代码清单 40-1。 代码清单 40-1 硬件相关宏定义(bsp_breathing.h 文件) 1 2 #define RED_LIGHT 1 3 #define GREEN_LIGHT 2 4 #define BLUE_LIGHT 3 5 6 /*要使用什么颜色的呼吸灯,可选 RED_LIGHT、GREEN_LIGHT、BLUE_LIGHT*/ 7 #define LIGHT_COLOR RED_LIGHT 8 9 /********************定时器通道**************************/ 10 #if LIGHT_COLOR == RED_LIGHT 11 /************红灯***************/ 12 #define BRE_TIMx TIM3 13 14 #define BRE_TIM_APBxClock_FUN RCC_APB1PeriphClockCmd 15 #define BRE_TIM_CLK RCC_APB1Periph_TIM3 16 #define BRE_TIM_GPIO_APBxClock_FUN RCC_APB2PeriphClockCmd 17 #define BRE_TIM_GPIO_CLK (RCC_APB2Periph_GPIOB|RCC_APB2Periph_AFIO) 18 19 //红灯的引脚需要重映射 20 #define BRE_GPIO_REMAP_FUN() GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); 21 22 #define BRE_TIM_LED_PORT GPIOB 23 #define BRE_TIM_LED_PIN GPIO_Pin_5 24 25 #define BRE_TIM_OCxInit TIM_OC2Init //通道选择,1~4 26 #define BRE_TIM_OCxPreloadConfig TIM_OC2PreloadConfig 27 #define BRE_CCRx CCR2 28 29 #define BRE_TIMx_IRQn TIM3_IRQn //中断 30 #define BRE_TIMx_IRQHandler TIM3_IRQHandler
- 粉丝: 30
- 资源: 4180
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助