[技术问答] 关于TimerA定时器捕获输入的问题

[复制链接]
1569|9
 楼主| Hkk233 发表于 2023-4-14 14:45 | 显示全部楼层 |阅读模式
使用TimerA定时器来进行捕获输入,通过keil查看寄存器,定时器在计数,中断也使能了,但是无法进入中断服务函数,输入信号应该是没有问题的,我写了一个外部中断的代码,输入信号的三个引脚可以触发外部中断。是我配置的问题吗?
  1. void TimerA_CaptureInit(void)
  2. {
  3.         stc_timera_base_init_t     stcTimeraInit;
  4.         stc_timera_capture_init_t   stcTimeraCaptureInit;
  5.         stc_irq_regi_conf_t        stcIrqRegiConf;
  6.         stc_port_init_t            stcPortInit;
  7.        
  8.        
  9.         MEM_ZERO_STRUCT(stcTimeraInit);
  10.         MEM_ZERO_STRUCT(stcTimeraCaptureInit);
  11.         MEM_ZERO_STRUCT(stcIrqRegiConf);
  12.         MEM_ZERO_STRUCT(stcPortInit);

  13.        
  14.         PWC_Fcg2PeriphClockCmd(PWC_FCG2_PERIPH_TIMA2,Enable);
  15. //        PWC_Fcg0PeriphClockCmd(PWC_FCG0_PERIPH_AOS,Enable);
  16.        
  17.        
  18.         PORT_SetFunc(TIMA_HALL_A_GPIO_PORT,TIMA_HALL_A_GPIO_PIN,Func_Tima2,Disable);
  19.         PORT_SetFunc(TIMA_HALL_B_GPIO_PORT,TIMA_HALL_B_GPIO_PIN,Func_Tima2,Disable);
  20.         PORT_SetFunc(TIMA_HALL_C_GPIO_PORT,TIMA_HALL_C_GPIO_PIN,Func_Tima2,Disable);
  21.        
  22.        
  23.         stcTimeraInit.enClkDiv = TimeraPclkDiv256;
  24.         stcTimeraInit.enCntDir = TimeraCountDirUp;          //向上计数
  25.         stcTimeraInit.enCntMode = TimeraCountModeSawtoothWave;  //三角波
  26.         stcTimeraInit.enSyncStartupEn = Disable;
  27.         stcTimeraInit.u16PeriodVal = TIMERA_COUNT_OVERFLOW;
  28.         TIMERA_BaseInit (M4_TMRA2,&stcTimeraInit);
  29.        
  30.         stcTimeraCaptureInit.enCapturePwmRisingEn = Enable;           //HICP0 采样到上升沿时捕获通道动作控制
  31.         stcTimeraCaptureInit.enCapturePwmFallingEn = Enable;         //HICP1 采样到下降沿时捕获通道动作控制
  32.         stcTimeraCaptureInit.enCaptureSpecifyEventEn = Disable;      //HICP2 专用比较时间触发通道动作控制
  33.         stcTimeraCaptureInit.enPwmClkDiv =TimeraFilterPclkDiv4;      //NOFICK pwm滤波时钟选择
  34.         stcTimeraCaptureInit.enPwmFilterEn = Enable;                 //NOFIENCP 滤波功能控制  
  35.         stcTimeraCaptureInit.enCaptureTrigRisingEn = Disable;        //HICP3  
  36.         stcTimeraCaptureInit.enCaptureTrigFallingEn = Disable;      //HICP4  
  37.         stcTimeraCaptureInit.enTrigClkDiv = TimeraFilterPclkDiv1;
  38.         stcTimeraCaptureInit.enTrigFilterEn =Disable;
  39.        
  40.         TIMERA_CaptureInit(M4_TMRA2,TIMERA_UINT_CH1,&stcTimeraCaptureInit);
  41.         TIMERA_IrqCmd(M4_TMRA2,TIMERA_UNIT2_CH1_INT,Enable);
  42.        
  43.         TIMERA_CaptureInit(M4_TMRA2,TIMERA_UINT_CH3,&stcTimeraCaptureInit);
  44.         TIMERA_IrqCmd(M4_TMRA2,TIMERA_UNIT2_CH3_INT,Enable);
  45.        
  46.        
  47.         TIMERA_CaptureInit(M4_TMRA2,TIMERA_UINT_CH4,&stcTimeraCaptureInit);
  48.         TIMERA_IrqCmd(M4_TMRA2,TIMERA_UNIT2_CH4_INT,Enable);
  49.        
  50.        
  51.         stcIrqRegiConf.enIntSrc = TIMERA_UNIT2_COMPARE_INT;
  52.         stcIrqRegiConf.enIRQn = Int000_IRQn;
  53.         stcIrqRegiConf.pfnCallback = &TimeraUnit2_IrqCallback;
  54.         enIrqRegistration(&stcIrqRegiConf);
  55.         NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);
  56.         NVIC_SetPriority(stcIrqRegiConf.enIRQn,DDL_IRQ_PRIORITY_00);
  57.         NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);
  58.        
  59. //        stcPortInit.enExInt = Enable;
  60. //        PORT_Init(KEY2_GPIO_PORT,KEY2_GPIO_PIN,&stcPortInit);
  61. //        TIMERA_SetCaptureTriggerSrc(EVT_PORT_EIRQ10);
  62.        
  63.         TIMERA_Cmd(M4_TMRA2,Enable);
  64.        
  65.        
  66. }

评论

先试下官方例程能跑通不?  发表于 2023-5-11 14:56
 楼主| Hkk233 发表于 2023-4-14 15:05 | 显示全部楼层
补充一下,数据也捕获不到
tpgf 发表于 2023-5-11 12:00 | 显示全部楼层
楼主设置的是只捕获脉冲的上升沿或者下降沿吗
wiba 发表于 2023-5-11 12:13 | 显示全部楼层
Hkk233 发表于 2023-4-14 15:05
补充一下,数据也捕获不到

我不是很明白 定时器的输入捕获功能怎么才能捕获数据呢
zljiu 发表于 2023-5-11 14:40 | 显示全部楼层
捕获一般就是捕捉边沿的变化  至于说数据是怎么捕捉呢
tfqi 发表于 2023-5-11 14:59 | 显示全部楼层
楼主还得确认一下中断向量是不是正确的
磨砂 发表于 2023-5-11 15:12 | 显示全部楼层
楼主除了开启定时器中断外  还需要开启总中断
Henryko 发表于 2023-5-12 23:13 | 显示全部楼层
应该是捕捉边沿的变化
喂什么玩意 发表于 2024-7-31 11:13 | 显示全部楼层
输入信号的三个引脚可以触发外部中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部