【NUCLEO-U083RC】32位定时器设置和PWM测试
[复制链接]
硬件设置介绍
STM32U083RC的定时器多达10个,还有一个32位的通用定时器TIM2,本次的测试使用这个TIM2定时器。并且使用该定时器输出PWM脉冲。
STM32的时钟最高可以达到48MHZ,那么一微秒的精度配合32位定时器可以达到7分多钟的高长定时了,如果使用16位的定时秒级的定时都是很难的,所以本次测试PWM宽度设置周期为2秒。
定时器设置
定时器使用TIM2,TIM2是挂载在ABP总线上的,时钟为48MHZ。定时精度1uS,周期2S。
PSC=48-1; //定时精度 1uS
Counter=2,000,000-1; //(这个数字很让我激动,哈哈)
timxPeriod= 2,000,000/2;//占空比=50%
硬件的规划,PA2是TIM2的CH3通道,但是与板子的串口冲突,所以选择了PB10引脚。
PB10引脚与CN9的7PIN连接
按照本次的计划进行设置。
设置完成后,将TIM2的中断打开,可以使用中断完成计数功能。
程序代码
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_TIM2_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
printf("\n\r UART Printf Example: retarget the C library printf function to the UART\n\r");
printf("** Test finished successfully. ** \n\r");
counter = 0;
old_counter = 0;
HAL_TIM_PWM_Start_IT(&htim2, TIM_CHANNEL_3);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
if( old_counter != counter)
{
printf("PWM counter NB:=%d \n\r",counter);
old_counter = counter;
}
HAL_Delay(10);
/* USER CODE BEGIN 3 */
}
|
|