[size=13.6364px]STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP, Graphics, 等等).
[size=13.6364px]- 直观的STM32微控制器的选择和时钟树配置
- 微控制器图形化配置外围设备和中间件的功能模式和初始化参数
- C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。
对于新的产品设计,我们强烈推荐使用STM32Cube来加速你的开发过程,并为以后的产品平台移植打下良好的基础。
接下来使用STM32CubeMx实现最简单的TIM1的10ms定时中断功能。
1.选择对应MCU型号(此处就不上图了)
2.仿真接口选择为SW,RCC选择外部时钟,开启定时器主模式,选择内部时钟源。
3.配置时钟树各分频参数。
4.配置定时器预分频72,定时周期为10000个时钟周期,上升计数模式。
5.生成代码。
使用MDK4.72打开代码并编译后,烧录到开发板仿真调试,在定时器中断函数中添加断点,发现定时器并未启动和产生中断。
查看定时器相关寄存器,定时器启动控制位CEN和中断控制位UIE没有置位。
查看生成的源代码,在函数HAL_TIM_Base_MspInit中,并没有开启定时器,只是预留了用户添加代码的区域,所以用户需添加启动定时器和中断的代码
HAL_TIM_Base_Start_IT(tim_baseHandle);
HAL_TIM_Base_Start(tim_baseHandle);
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* tim_baseHandle)
{
if(tim_baseHandle->Instance==TIM1)
{
/* USER CODE BEGIN TIM1_MspInit 0 */
/* USER CODE END TIM1_MspInit 0 */
/* Peripheral clock enable */
__HAL_RCC_TIM1_CLK_ENABLE();
/* Peripheral interrupt init */
HAL_NVIC_SetPriority(TIM1_UP_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(TIM1_UP_IRQn);
/* USER CODE BEGIN TIM1_MspInit 1 */
HAL_TIM_Base_Start_IT(tim_baseHandle);
HAL_TIM_Base_Start(tim_baseHandle);
/* USER CODE END TIM1_MspInit 1 */
}
}
至此,仿真调试可以进入定时器中断。
|