1190|4

3183

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

不进定时器中断的问题 [复制链接]

我有一个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 */

另一个工程定时器部分和这个一样,可就是不进中断,我反复对比,都一样。

请问高手,可能是什么原因造成不进中断呢?谢谢!

此帖出自stm32/stm8论坛

最新回复

是不是用了RTOS?用了的话中断优先级看看是不是有问题。   详情 回复 发表于 2023-7-25 09:17
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

6069

帖子

4

TA的资源

版主

沙发
 
本帖最后由 damiaa 于 2023-7-24 14:59 编辑

1,图形初始化配置定时器,配好并允许中断。

2,HAL_TIM_Base_Start_IT(&htmX);应该就可以进入了。

3,不过一般在回调函数里面处理这些数据。

 

估计问题是 有可能1没做好,有可能是进入了你以为没进中断  还有。。有待发现。

此帖出自stm32/stm8论坛
 
 

回复

24

帖子

4

TA的资源

一粒金砂(中级)

板凳
 
代码一样的话,查工程配置是否一样;若工程配置也一样,查是否有高级中断频繁产生,导致低级中断无机会响应。
此帖出自stm32/stm8论坛
 
 

回复

3183

帖子

0

TA的资源

纯净的硅(高级)

4
 

谢谢各位,查不出来,换成键盘查询方式了

此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复

6773

帖子

2

TA的资源

版主

5
 

是不是用了RTOS?用了的话中断优先级看看是不是有问题。

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表