[技术问答] HC32F072JATA 计数器不能正常记数求助

[复制链接]
 楼主| icpal 发表于 2022-3-21 16:00 | 显示全部楼层 |阅读模式
TI, AC, AD, HC, APWM
本帖最后由 icpal 于 2022-3-21 16:01 编辑

第一次做arm的项目,用的是HC32F072JATA,有一个功能实现不了:

TIM0输出PWM信号,用于驱动步进电机,然后用TIM1在内部互联,对TIM0的PWM进行记数。由于官网的包里找不到类似的参考例程,打电机官网不给支持,自己也没有琢磨出来。

问题表现在,TIM0的PWM开启后,读TIM1的CNT值,能从0跑变到1,但一直为1不再增加。



于是我把代码简代了,功能改成,我在PB10和PB11手动输入高电平脉冲信号,让TIM1去记数,但记得的结果,仍然是1。即便我把CNT值初始为1000,执行后,CNT值还是1
以下是TIM1的初始化代码:
  1. void TIM1_Init()
  2. {
  3.     //------------------ 端口配置初始化 ------------------
  4.     stc_gpio_cfg_t          stcTIM1Port;
  5.     DDL_ZERO_STRUCT(stcTIM1Port);
  6.     Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE); //GPIO 外设时钟使能
  7.     stcTIM1Port.enDir  = GpioDirIn;
  8.     //PB10设置为TIM1_CHA
  9.     Gpio_Init(GpioPortB, GpioPin10, &stcTIM1Port);
  10.     Gpio_SetAfMode(GpioPortB,GpioPin10,GpioAf3);
  11.     //PB11设置为TIM1_CHB
  12.     Gpio_Init(GpioPortB, GpioPin11, &stcTIM1Port);
  13.     Gpio_SetAfMode(GpioPortB,GpioPin11,GpioAf2);
  14.    
  15.     //------------------ TIM1 模式1 ------------------
  16.     Sysctrl_SetPeripheralGate(SysctrlPeripheralBaseTim, TRUE); //Base Timer外设时钟使能
  17.    
  18.     // TIM1初始化(模式1)
  19.     Bt_Mode1_Init(TIM1, &(stc_bt_mode1_cfg_t){
  20.                 .enWorkMode = BtWorkMode1,                //MODE                //工作模式 :PWC模式
  21.                 .enCT       = BtCounter,                //CT                //功能选择 :定时器
  22.                 .enPRS      = BtPCLKDiv1,                //PRS                //预除频   :1
  23.                 .enOneShot  = BtPwcCycleDetect        //ONESHOT        //单次/循  : PWC循环检
  24.         });
  25.    
  26.         // PWC 输入配置(模式1)
  27.     Bt_M1_Input_Cfg(TIM1, &(stc_bt_pwc_input_cfg_t){
  28.                 .enTsSel          = BtTs7IBFP,                                        //PWC输入  : CHB
  29.                 // CHA
  30.                 .enIA0Sel         = BtIA0Input,
  31.                 .enFltIA0         = BtFltNone,
  32.                 // CHB
  33.                 .enIB0Sel         = BtIB0Input,
  34.                 .enFltIB0         = BtFltNone,
  35.                 // ETR
  36.                 .enETRPhase = BtPortPositive,
  37.                 .enFltETR         = BtFltNone
  38.         });
  39.         // PWC测量边沿起始结束选择
  40.     Bt_M1_PWC_Edge_Sel(TIM1, BtPwcRiseToRise);                //上升沿到上升沿捕获
  41.    
  42.     Bt_M1_Cnt16Set(TIM1, 1000);                                                //设置计数初值
  43. }


点评

模式1——pwc是测脉宽的,不是计数的。  发表于 2022-3-25 18:12
 楼主| icpal 发表于 2022-3-25 10:25 | 显示全部楼层
好些天了,希望有大神能帮忙分析一下
yelong98 发表于 2022-3-28 15:14 来自手机 | 显示全部楼层
072多少钱一个?
 楼主| icpal 发表于 2022-3-31 10:36 | 显示全部楼层

我只是买了十来片先调试,批量的话不到十块钱
zbxiong139 发表于 2022-4-1 12:02 | 显示全部楼层
前两天也买了几片试试,每片8.5元,说有量可谈。
 楼主| icpal 发表于 2022-5-11 20:29 | 显示全部楼层
zbxiong139 发表于 2022-4-1 12:02
前两天也买了几片试试,每片8.5元,说有量可谈。

问题一直没有解决,加上现在供货不太好,我放弃了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

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