[技术问答] 请问HC32F003/005的高级定时器TIM4/5/6怎么实现普通定时计数?

[复制链接]
1818|7
 楼主| o0pingu0o 发表于 2020-4-12 15:28 | 显示全部楼层 |阅读模式
请问HC32F003/005的高级定时器TIM4/5/6怎么实现普通定时计数?
zhugjbest 发表于 2020-4-13 11:50 | 显示全部楼层
原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCustomer:HdscGuest2019!@ftp.hdsc.com.cn/ 即可直接访问


华恒电子 发表于 2020-4-13 13:32 | 显示全部楼层
这个我客户遇到过,后面调好了 加QQ:3284494788 对接技术支持
 楼主| o0pingu0o 发表于 2020-4-13 13:56 | 显示全部楼层
zhugjbest 发表于 2020-4-13 11:50
原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCu ...

这里面没有,别用发了这个了
 楼主| o0pingu0o 发表于 2020-4-13 13:58 | 显示全部楼层
华恒电子 发表于 2020-4-13 13:32
这个我客户遇到过,后面调好了 加QQ:3284494788 对接技术支持

能发上来么?
martinhu 发表于 2020-4-13 15:06 | 显示全部楼层
zhugjbest 发表于 2020-4-13 11:50
原厂有提供官方例程,可以在这里找
【STEP1】打开【我的电脑】 ;
【STEP2】在地址栏输入地址 ftp://HdscCu ...

这里的adt的compare out的例子,把输出的CHA和CHB的引脚不要配置,PCONR的输出配置也不要,只留周期的配置,就是普通定时器,计数规则就是从0计数到ARR然后溢出,产生上溢或者下溢中断(三角波模式由计数方向决定,如果计数方向向上,则从0到ARR,产生上溢中断,中断使用OVF中断,反之亦然)。如果要在定时器运行中改周期,那么设置PARAR和PBRAR,并且使用周期的换成传送。如果不用改周期,只要设置PARAR就可以。
 楼主| o0pingu0o 发表于 2020-4-14 08:08 | 显示全部楼层
martinhu 发表于 2020-4-13 15:06
这里的adt的compare out的例子,把输出的CHA和CHB的引脚不要配置,PCONR的输出配置也不要,只留周期的配 ...

多谢,已经实现了。
陌路独白 发表于 2021-1-26 10:55 | 显示全部楼层
本帖最后由 陌路独白 于 2021-1-26 11:23 编辑

谢谢,根据提示修改,已经进入中断,具体功能请再自行研究。
  1. /*
  2. * @Descripttion:
  3. * @version:
  4. * @Author: Youliangxin
  5. * @Date: 2021-01-25 17:24:57
  6. * @LastEditors: sueRimn
  7. * @LastEditTime: 2021-01-26 11:17:42
  8. */
  9. #include "adt.h"
  10. #include "gpio.h"

  11. #define SET_LED Gpio_SetIO(1, 5, 1)
  12. #define CLR_LED Gpio_SetIO(1, 5, 0)

  13. void Adt4UnderFullCalllback(void)
  14. {
  15.     static uint8_t i;
  16.     i++;
  17.     if (i % 2 == 0)
  18.     {
  19.         SET_LED;
  20.     }
  21.     else
  22.     {
  23.         CLR_LED;
  24.     }
  25. }

  26. void Time_4_Init(void)
  27. {
  28.     uint16_t u16Period;
  29.     stc_adt_basecnt_cfg_t stcAdtBaseCntCfg;

  30.     DDL_ZERO_STRUCT(stcAdtBaseCntCfg);

  31.     if (Ok != Clk_SetPeripheralGate(ClkPeripheralAdt, TRUE)) //ADT外设时钟使能
  32.     {
  33.         return;
  34.     }

  35.     stcAdtBaseCntCfg.enCntMode = AdtSawtoothMode;
  36.     stcAdtBaseCntCfg.enCntDir = AdtCntUp;
  37.     stcAdtBaseCntCfg.enCntClkDiv = AdtClkPClk0Div256;
  38.     Adt_Init(AdTIM4, &stcAdtBaseCntCfg); //ADT载波、计数模式、时钟配置

  39.     u16Period = 46875;                //12000000/256 = 46875 周期设置为1S中断一次
  40.     Adt_SetPeriod(AdTIM4, u16Period); //周期设置

  41.     Adt_ConfigIrq(AdTIM4, AdtOVFIrq, TRUE, Adt4UnderFullCalllback); //中断配置

  42.     Adt_StartCount(AdTIM4);

  43.     /*LED初始化*/
  44.     Gpio_InitIO(1, 5, GpioDirOut);
  45.     Gpio_SetIO(1, 5, 1);
  46. }

  47. /******************************************************************************
  48. * EOF (not truncated)
  49. ******************************************************************************/


andy93762 发表于 2021-1-26 22:29 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

34

帖子

1

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