OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1025|回复: 2

探索者 stm32 定时器初始化 MSPinit

[复制链接]

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2020-10-29
在线时间
13 小时
发表于 2023-11-15 17:02:59 | 显示全部楼层 |阅读模式
1金钱
void btim_timx_int_init(uint16_t arr, uint16_t psr)
{

    g_timx_handler.Instance = BTIM_TIMX_INT;              /* 定时器x */
    g_timx_handler.Init.Prescaler = psr;                  /* 预分频 */
    g_timx_handler.Init.CounterMode = TIM_COUNTERMODE_UP; /* 递增计数模式 */
    g_timx_handler.Init.Period = arr;                     /* 自动重装载值 周期 */
    HAL_TIM_Base_Init(&g_timx_handler);                   /* 初始化定时器 */
    HAL_TIM_Base_Start_IT(&g_timx_handler);               /* 使能定时器更新中断 */
}
/**
* @description: 定时器底层驱动 开启时钟  设置中断优先级
*                  此函数会被 HAL_TIM_Base_Init()函数调用
* @param {TIM_HandleTypeDef} *htim
* @return {*}
*/
/**
* @brief 定时器底层驱动,开启时钟,设置中断优先级
此函数会被 HAL_TIM_Base_Init()函数调用
* @param
* @retval
*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == BTIM_TIMX_INT)
    {
        BTIM_TIMX_INT_CLK_ENABLE();                     /* 使能 TIMx 时钟 */
        HAL_NVIC_SetPriority(BTIM_TIMX_INT_IRQn, 1, 3); /* 设置中断优先级,抢占优先级 1,子优先级 3 */
        HAL_NVIC_EnableIRQ(BTIM_TIMX_INT_IRQn);         /* 开启 ITMx 中断 */
    }
}

问题:基本定时器初始化的时后 使能时钟 配置中断 为什么不放在 btim_timx_int_init() ?
想法:  同GPIO的初始化一样 的初始化流程不好吗?



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

2103

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4588
金钱
4588
注册时间
2015-1-10
在线时间
574 小时
发表于 2023-11-16 10:27:04 | 显示全部楼层
这个只是个模板例程,你完全可以自己定义你的初始化函数
回复

使用道具 举报

2

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
59
金钱
59
注册时间
2020-10-29
在线时间
13 小时
 楼主| 发表于 2023-11-17 15:37:37 | 显示全部楼层
阿侑kevin 发表于 2023-11-16 10:27
这个只是个模板例程,你完全可以自己定义你的初始化函数

我看了cube mx的配置代码也是这样的 不知道是不是这原因  
/**
* @brief TIM_Base MSP Initialization
* This function configures the hardware resources used in this example
* @param htim_base: TIM_Base handle pointer
* @retval None
*/
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef* htim_base)
{
  if(htim_base->Instance==TIM6)
  {
  /* USER CODE BEGIN TIM6_MspInit 0 */

  /* USER CODE END TIM6_MspInit 0 */
    /* Peripheral clock enable */
    __HAL_RCC_TIM6_CLK_ENABLE();
    /* TIM6 interrupt Init */
    HAL_NVIC_SetPriority(TIM6_DAC_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(TIM6_DAC_IRQn);
  /* USER CODE BEGIN TIM6_MspInit 1 */

  /* USER CODE END TIM6_MspInit 1 */
  }

}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 04:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表