定时器&PWM练习

一、利用STM32Cube生成相关代码

1、创建新工程文件

点击ACCESS TO MCU SELECTOR创建新的工程文件在这里插入图片描述

2、配置RCC

在这里插入图片描述
选择Crystal/Ceramic Resonator

3、配置SYS

选择Serial Wire
在这里插入图片描述

4、配置IO

在这里插入图片描述

5、配置定时器2

这里我们使用定时器2来实现定时的功能。如图所示,依次点击位置1,选中定时器2;位置2,配置定时器2的时钟源为内部时钟;位置3,分频系数为71,向上计数模式,计数周期为5000,使能自动重载模式。如图:
在这里插入图片描述
分频系数那里虽然写的是71,但系统处理的时候会自动加上1,所以实际进行的是72分频。

6、配置中断

在这里插入图片描述
如图,开启定时器2的中断
如图,生成定时器2中断优先级配置代码
在这里插入图片描述

7、配置时钟

如图所示
在这里插入图片描述

8、创建文件

在这里插入图片描述

一、keil代码操作

打开刚刚生成的文件,找到main.c文件中
在这里插入图片描述
在MX_NVIC_Init()下面添加如下代码

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);
		}
	}
}

然后调试后生成hex文件,通过串口助手烧录,再根据配置连接上led灯就完成了。

三、参考

http://www.mcublog.cn/stm32/2021_01/stm32cubemx-dingshiqi-led/

猜你喜欢

转载自blog.csdn.net/qq_54761976/article/details/127597380