[技术问答] HC32F003的基本定时器驱动

[复制链接]
2164|15
 楼主| 查询无结果 发表于 2020-4-28 11:04 | 显示全部楼层 |阅读模式
按照用户手册给的配置了寄存器,32位定时器模式,启动定时器后并没有开始定时,不知道什么原因,有写过的吗
zhuotuzi 发表于 2020-4-28 21:46 | 显示全部楼层
肯定是没有配置对啊。
xuanhuanzi 发表于 2020-4-28 22:34 | 显示全部楼层
代码贴了看看。
xuanhuanzi 发表于 2020-4-28 22:49 | 显示全部楼层
这种一般都是没有配置对,不要纠结,单片机能出厂就说明没问题。
 楼主| 查询无结果 发表于 2020-4-28 23:00 | 显示全部楼层
麻烦各位帮忙看一下,是不是我哪里设置错了,感谢
定时器.PNG
xuanhuanzi 发表于 2020-4-28 23:12 | 显示全部楼层
245055ea847bcd877e.png
看官方的例子啊。

评论

滴答定时器实现定时功能实现了,想用定时器来实现一下单次定时的功能  发表于 2020-4-28 23:13
xuanhuanzi 发表于 2020-4-28 23:12 | 显示全部楼层
ftp://HdscCustomer:HdscGuest2019!@ftp.hdsc.com.cn/%E8%B5%84%E6%96%99%E4%B8%8B%E8%BD%BD/HC32F003_SDK/%E9%A9%B1%E5%8A%A8%E5%BA%93%E5%8F%8A%E6%A0%B7%E4%BE%8B/HC32F003_DDL_Rev1.0.2.zip
  1. void delay1ms(uint32_t u32Cnt)
  2. {
  3.     uint32_t u32end;
  4.     while(u32Cnt-- > 0)
  5.     {
  6.         SysTick->VAL = 0;

  7.         u32end = 0x1000000 - SystemCoreClock/1000;
  8.         while(SysTick->VAL > u32end)
  9.         {
  10.             ;
  11.         }
  12.     }
  13. }
HuangHongLun 发表于 2020-4-29 15:38 | 显示全部楼层
是不是你的全局参数没有开启呢?可以参考stm32这样的例程,我相信应该是类似的。
詹求实 发表于 2020-4-29 18:55 | 显示全部楼层
观察计数器的值,如果没变化,那就说明没有初始化好或者是启动失败了。
martinhu 发表于 2020-4-30 14:17 | 显示全部楼层
有例程啊……
jjg424 发表于 2021-8-4 22:36 | 显示全部楼层
华大的定时器用keilV6编译会异常,不能正常执行,后来我换了V5的编译器就正常了.问他们技术支持也说不出个所以然

评论

@martinhu :官网下载最新的 https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/28/key/0  发表于 2021-8-5 10:06
什么版本的库?代码发出来看看  发表于 2021-8-5 09:09
jjg424 发表于 2021-8-5 10:12 | 显示全部楼层
本帖最后由 jjg424 于 2021-8-5 10:17 编辑
  1. static en_result_t App_BtTimerTest(void)
  2. {
  3.     stc_bt_cfg_t   stcCfg;
  4.     en_result_t       enResult = Ok;

  5.     //打开BT外设时钟
  6.     Sysctrl_SetPeripheralGate(SysctrlPeripheralBt, TRUE);

  7.     stcCfg.enGateP = BtPositive;
  8.     stcCfg.enGate  = BtGateDisable;
  9.     stcCfg.enPRS   = BtPCLKDiv16;
  10.     stcCfg.enTog   = BtTogDisable;
  11.     stcCfg.enCT    = BtTimer;
  12.     stcCfg.enMD    = BtMode2;
  13.     //Bt初始化
  14.     if (Ok != Bt_Init(TIM1, &stcCfg))
  15.     {
  16.         enResult = Error;
  17.     }

  18.     Bt_Cnt32Set(TIM1, 0);
  19.     Bt_Run(TIM1);

  20.     return enResult;
  21. }
jjg424 发表于 2021-8-5 10:22 | 显示全部楼层

同样的代码在V5编译器上就能正常工作,V6上编译后定时器数值一直不变化,

如果用V6编译器并且改成16位重载定时器,只要是开启"中断"后定时数值也不变化,也不会进入中断
关闭"中断"后数值会变化.但没用,没中断了.

同样的代码我换成V5的.,却跟手册描述的一样了,正常了. 还有一个问题就是你们官方例程里3个都是需要外部端口触发的. 没有内部自动定时触发中断的例程
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

148

帖子

3

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