定时器捕获模式进入不了中断

2019-12-11 18:24发布

正在测试一个代码,
PC6是LED灯,通过定时器4捕获霍尔元件的输入信号,如果进入中断则灯亮。
但是不知道为什么进不去,配置如下,大佬解析一下
  1. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
  2. {
  3.         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_6, GPIO_PIN_RESET);
  4. }
复制代码
  1. int main(void)
  2. {  
  3. HAL_Init();
  4.   SystemClock_Config();
  5.   MX_GPIO_Init();
  6.   MX_TIM4_Init();
  7.   while (1)
  8.         {}
  9. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
20061002838
1楼-- · 2019-12-11 21:26
 精彩回答 2  元偷偷看……
wangmengqiwo
2楼-- · 2019-12-11 22:26
20061002838 发表于 2019-5-8 21:43
TIM4的捕获中断没有使能

在while前加了
  1. HAL_TIM_IC_Start(&htim4, TIM_CHANNEL_1 | TIM_CHANNEL_2 | TIM_CHANNEL_3 | TIM_CHANNEL_4);
  2.                 HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1 | TIM_CHANNEL_2 | TIM_CHANNEL_3 | TIM_CHANNEL_4);
复制代码
还是不行
wangmengqiwo
3楼-- · 2019-12-12 03:16
20061002838 发表于 2019-5-8 21:43
TIM4的捕获中断没有使能

现在是我用霍尔信号驱动(直接是电机上的霍尔元件没接上拉,不确定这里要不要接)不会产生中断,然后用一个飞线+5V输入到通道4就会产生中断。(中间4个为定时器4的1—4通道,下面的是那个设置的要点亮的灯)。所以是没接上拉电阻的问题吗?有没有不接上拉电阻的方式可以驱动。
20061002838
4楼-- · 2019-12-12 05:42
wangmengqiwo 发表于 2019-5-8 22:20
现在是我用霍尔信号驱动(直接是电机上的霍尔元件没接上拉,不确定这里要不要接)不会产生中断,然后用一 ...

调试界面检查寄存器
飞线加个上拉电阻试试呗
wangmengqiwo
5楼-- · 2019-12-12 11:09
20061002838 发表于 2019-5-8 23:07
调试界面检查寄存器
飞线加个上拉电阻试试呗

重新配置了霍尔元件接口,使用CubeMX中定时器的XOR/Hall Sensor Mode, 然后做了以下初始化,
  1. void HallInit(void)
  2. {
  3.         if(HAL_TIMEx_HallSensor_Start(&htim4)!= HAL_OK)
  4.                 HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, GPIO_PIN_RESET);
  5.         //HAL_TIM_IC_Start_IT(&htim4, TIM_CHANNEL_1|TIM_CHANNEL_2|TIM_CHANNEL_3);
  6.         HAL_TIMEx_HallSensor_Start_IT(&htim4);
  7. }
复制代码
在捕获中断里产生了LED等的取反操作,然而如果是初始化捕获中断(在初始化中标注的句子)就无法产生中断。
  1. void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
  2. {
  3.         HAL_GPIO_WritePin(GPIOC, GPIO_PIN_7, 1-HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_7));
  4. }
复制代码
不清楚是不是HAL库的什么设定。
之前卡在这里几天就是上面那个初始化的问题,初始化了霍尔接口没有初始化其中断,感谢大佬了。
这个带霍尔元件的电机驱动我做完了做个大的总结。

一周热门 更多>