|
实验介绍
开发平台:官方STM32H743 NUCLEO板子
开发环境:MDK5.25正式版
软件版本:
(1)CMSIS软件包 V5.3.0
(2)H7的HAL库版本 V1.2.0
例程下载:
实验18:STM32H743实现定时器中断.7z
(1.1 MB, 下载次数: 178)

- /*
- *********************************************************************************************************
- * 配置一个TIM1
- *********************************************************************************************************
- */
- TIM_HandleTypeDef htim1;
- /*
- *********************************************************************************************************
- * 函 数 名: bsp_Tim1Init
- * 功能说明: 配置定时器1,周期中断。
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void bsp_Tim1Init(void)
- {
- /* --------------------------------------------------------
- 时钟的配置如下:
- System Clock source = PLL (HSE BYPASS)
- SYSCLK(Hz) = 400000000 (CPU Clock)
- HCLK(Hz) = 200000000 (AXI and AHBs Clock)
- AHB Prescaler = 2
- D1 APB3 Prescaler = 2 (APB3 Clock 100MHz)
- D2 APB1 Prescaler = 2 (APB1 Clock 100MHz)
- D2 APB2 Prescaler = 2 (APB2 Clock 100MHz)
- D3 APB4 Prescaler = 2 (APB4 Clock 100MHz)
- 因为APB1 prescaler != 1, 所以 APB1上的TIMxCLK = APB1 x 2 = 200MHz;
- 因为APB2 prescaler != 1, 所以 APB2上的TIMxCLK = APB2 x 2 = 200MHz;
- APB4上面的TIMxCLK没有分频,所以就是100MHz;
- APB1 定时器有 TIM2, TIM3 ,TIM4, TIM5, TIM6, TIM7, TIM12, TIM13, TIM14,LPTIM1
- APB2 定时器有 TIM1, TIM8 ,TIM9, TIM15, TIM16,TIM17
- APB4 定时器有 LPTIM2,LPTIM3,LPTIM4,LPTIM5
-
- TIM6 更新周期是 = TIM1CLK / (Period + 1)/(Prescaler + 1)
- 根据如下的配置,更新周期是:
- TIM6CLK /(Period + 1)/(Prescaler + 1)
- = 200MHz /(1999+1)/(9999+1)
- = 10Hz
- ----------------------------------------------------------- */
-
- /* 使能定时器的时钟 */
- __HAL_RCC_TIM1_CLK_ENABLE();
-
-
- /*##-1- 配置定时器外设 #######################################*/
- htim1.Instance = TIM1;
- htim1.Init.Prescaler = 1999;
- htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
- htim1.Init.Period = 9999;
- htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
- htim1.Init.RepetitionCounter = 0;
- htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
-
- /*##-2- 使能定时器 ##########################################*/
- if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
- {
- Error_Handler(__FILE__, __LINE__);
- }
-
- /*##-3- 使能溢出中断 ##########################################*/
- HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0);
- HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);
- /*##-4- 启动 ##########################################*/
- HAL_TIM_Base_Start_IT(&htim1);
- }
- /*
- *********************************************************************************************************
- * 函 数 名: TIM1_UP_IRQHandler
- * 功能说明: 定时器1中断服务程序
- * 形 参: 无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- void TIM1_UP_IRQHandler(void)
- {
- HAL_TIM_IRQHandler(&htim1);
- }
复制代码
|
|