打印
[STM32L4]

不进定时器中断的问题

[复制链接]
159|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
比神乐|  楼主 | 2023-7-24 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一个STM32L4R5的板子,有一个工程用到定时器6,可以进中断。
部分代码如下:
static void MX_TIM6_Init(void)
{

  /* USER CODE BEGIN TIM6_Init 0 */

  /* USER CODE END TIM6_Init 0 */

  TIM_MasterConfigTypeDef sMasterConfig = {0};

  /* USER CODE BEGIN TIM6_Init 1 */

  /* USER CODE END TIM6_Init 1 */
  htim6.Instance = TIM6;
  htim6.Init.Prescaler = 16;
  htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim6.Init.Period = 14286;
  htim6.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  if (HAL_TIM_Base_Init(&htim6) != HAL_OK)
  {
    Error_Handler();
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim6, &sMasterConfig) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN TIM6_Init 2 */

  /* USER CODE END TIM6_Init 2 */

}


主程序:
MX_TIM6_Init();
        HAL_TIM_Base_Start_IT(&htim6);

中断服务程序
void TIM6_DAC_IRQHandler(void)
{
  /* USER CODE BEGIN TIM6_DAC_IRQn 0 */
        if(!KeyCanChange)return;     //如果正在处理按键,则不再扫描键盘

//开始键盘扫描
//保存按键状态到当前按键情况
//KeyCurrent总共有8个bit
//当某个开关按下时,对应的bit为1
KeyCurrent=(HAL_GPIO_ReadPort(GPIOC)&0x0f); //读取键值,GetKeyValue()其实是个宏,不是函数,
                           //这里故意写成函数的样子,美观。它的定义在
                           //key.h文件中

if(KeyCurrent!=KeyOld)  //如果两次值不等,说明按键情况发生了改变
  {
   KeyNoChangedTime=0;       //键盘按下时间为1
   KeyOld=KeyCurrent;        //保存当前按键情况
   return;  //返回
  }
else
  {
   KeyNoChangedTime++;             //按下时间累计
   if(KeyNoChangedTime>=1)         //如果按下时间足够
    {
     KeyNoChangedTime=1;
     KeyPress=KeyOld;      //保存按键
     KeyDown|=(~KeyLast)&(KeyPress); //求出新按下的键
     KeyUp|=KeyLast&(~KeyPress);     //求出新释放的键
     KeyLast=KeyPress;                     //保存当前按键情况
    }
  }
        //HAL_GPIO_TogglePin(LD1_GPIO_Port, LD1_Pin);
  /* USER CODE END TIM6_DAC_IRQn 0 */
  HAL_TIM_IRQHandler(&htim6);
  /* USER CODE BEGIN TIM6_DAC_IRQn 1 */
       
  /* USER CODE END TIM6_DAC_IRQn 1 */
}
/* USER CODE END 1 */
另一个工程定时器部分和这个一样,可就是不进中断,我反复对比,都一样。
请问高手,可能是什么原因造成不进中断呢?谢谢!

使用特权

评论回复
沙发
香水城| | 2023-7-25 15:58 | 只看该作者
使用CubeMx进行配置,在TIMER NVIC栏使能相关中断,
用户程序里启用带中断的start函数,想不进中断都难哦。

使用特权

评论回复
板凳
比神乐|  楼主 | 2023-7-28 10:13 | 只看该作者
谢谢香版,搞好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

337

主题

3059

帖子

7

粉丝