目录
一,定时器
1,新建工程

2,配置引脚
注意这里是把PC15引脚设置为D1

3,配置定时器

4,设置中断
5,修改代码
HAL_TIM_Base_Start_IT(&htim2);

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static uint32_t time_cnt =0;
if(htim->Instance == TIM2)
{
if(++time_cnt >= 100)
{
time_cnt =0;
HAL_GPIO_TogglePin(D1_GPIO_Port,D1_Pin);
}
}
}
修改后,编译,烧录,可以看到LED1差不多每隔0.5秒翻转一次

二,PWM
1,配置定时器

2,修改代码
uint16_t duty_num = 10;

HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);

while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(50);
duty_num = duty_num + 10;
if(duty_num > 500)
{
duty_num = 0;
}
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,duty_num);
}
修改后,保存,编译、下载,重新上电。可以看到LED2,从亮倒暗,逐渐变化。

博客围绕STM32展开,介绍了定时器和PWM的配置。定时器部分包含新建工程、配置引脚、定时器、设置中断及修改代码,实现LED1每隔0.5秒翻转;PWM部分则是配置定时器和修改代码,使LED2亮度从亮到暗渐变。
1017

被折叠的 条评论
为什么被折叠?



