打印
[技术问答]

HC32F003的基本定时器驱动

[复制链接]
1757|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
按照用户手册给的配置了寄存器,32位定时器模式,启动定时器后并没有开始定时,不知道什么原因,有写过的吗

使用特权

评论回复
沙发
zhuotuzi| | 2020-4-28 21:46 | 只看该作者
肯定是没有配置对啊。

使用特权

评论回复
板凳
xuanhuanzi| | 2020-4-28 22:34 | 只看该作者
代码贴了看看。

使用特权

评论回复
地板
xuanhuanzi| | 2020-4-28 22:49 | 只看该作者
这种一般都是没有配置对,不要纠结,单片机能出厂就说明没问题。

使用特权

评论回复
5
查询无结果|  楼主 | 2020-4-28 23:00 | 只看该作者
麻烦各位帮忙看一下,是不是我哪里设置错了,感谢

定时器.PNG (52.55 KB )

定时器.PNG

使用特权

评论回复
6
xuanhuanzi| | 2020-4-28 23:12 | 只看该作者

看官方的例子啊。

使用特权

评论回复
评论
查询无结果 2020-4-28 23:13 回复TA
滴答定时器实现定时功能实现了,想用定时器来实现一下单次定时的功能 
7
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
void delay1ms(uint32_t u32Cnt)
{
    uint32_t u32end;
    while(u32Cnt-- > 0)
    {
        SysTick->VAL = 0;

        u32end = 0x1000000 - SystemCoreClock/1000;
        while(SysTick->VAL > u32end)
        {
            ;
        }
    }
}

使用特权

评论回复
8
HuangHongLun| | 2020-4-29 15:38 | 只看该作者
是不是你的全局参数没有开启呢?可以参考stm32这样的例程,我相信应该是类似的。

使用特权

评论回复
9
詹求实| | 2020-4-29 18:55 | 只看该作者
观察计数器的值,如果没变化,那就说明没有初始化好或者是启动失败了。

使用特权

评论回复
10
martinhu| | 2020-4-30 14:17 | 只看该作者
有例程啊……

使用特权

评论回复
11
jjg424| | 2021-8-4 22:36 | 只看该作者
华大的定时器用keilV6编译会异常,不能正常执行,后来我换了V5的编译器就正常了.问他们技术支持也说不出个所以然

使用特权

评论回复
评论
jjg424 2021-8-5 10:06 回复TA
@martinhu :官网下载最新的 https://www.hdsc.com.cn/cn/Index/downloadFile/modelid/66/id/28/key/0 
martinhu 2021-8-5 09:09 回复TA
什么版本的库?代码发出来看看 
12
jjg424| | 2021-8-5 10:12 | 只看该作者
本帖最后由 jjg424 于 2021-8-5 10:17 编辑
static en_result_t App_BtTimerTest(void)
{
    stc_bt_cfg_t   stcCfg;
    en_result_t       enResult = Ok;

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

    stcCfg.enGateP = BtPositive;
    stcCfg.enGate  = BtGateDisable;
    stcCfg.enPRS   = BtPCLKDiv16;
    stcCfg.enTog   = BtTogDisable;
    stcCfg.enCT    = BtTimer;
    stcCfg.enMD    = BtMode2;
    //Bt初始化
    if (Ok != Bt_Init(TIM1, &stcCfg))
    {
        enResult = Error;
    }

    Bt_Cnt32Set(TIM1, 0);
    Bt_Run(TIM1);

    return enResult;
}

使用特权

评论回复
13
jjg424| | 2021-8-5 10:22 | 只看该作者

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

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

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

141

帖子

3

粉丝