扫描以下二维码,关注公众号雍正不秃头获取更多STM32资源及干货!
环境: 1、STM32CubeMX 5.3 2、Atollic TrueSTUDIO for STM32 9.3.0 3、战舰迷你板(stm32f103rb)
本章效果为LED灯由PWM控制,由暗到亮,再由亮到暗,反复循环。
频率的计算方法: 定时器配置频率为10KHZ,所以ARR=99,PSC=71,占空比范围就是ARR的范围:0-100,100就是全为高: 初始化定时器后要使能PWM输出:
HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2);改变捕获比较值,也就是改变占空比:
__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, val);正点原子mini板的PA8是led灯,定时器3的PWM输出通道2是PA7,所以在板子上用跳线帽将PA8和PA7连接起来即可:
int main(void) { uint8_t mode = 1; uint32_t led0pwmval = 0; int i = 0; HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_TIM3_Init(); MX_USART1_UART_Init(); HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_2); // 使能PWM输出 while (1) { if (mode) led0pwmval++; else led0pwmval--; if (led0pwmval >= 100) mode = 0; if (led0pwmval == 0) mode = 1; __HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_2, led0pwmval); // 改变占空比 HAL_Delay(10); i++; if (i >= 100) { i = 0; HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); } } }ends…