HC32F003的基本定时器驱动
按照用户手册给的配置了寄存器,32位定时器模式,启动定时器后并没有开始定时,不知道什么原因,有写过的吗 肯定是没有配置对啊。 代码贴了看看。 这种一般都是没有配置对,不要纠结,单片机能出厂就说明没问题。 麻烦各位帮忙看一下,是不是我哪里设置错了,感谢看官方的例子啊。 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)
{
;
}
}
} 是不是你的全局参数没有开启呢?可以参考stm32这样的例程,我相信应该是类似的。 观察计数器的值,如果没变化,那就说明没有初始化好或者是启动失败了。
有例程啊…… 华大的定时器用keilV6编译会异常,不能正常执行,后来我换了V5的编译器就正常了.问他们技术支持也说不出个所以然 本帖最后由 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;
} jjg424 发表于 2021-8-5 10:12
同样的代码在V5编译器上就能正常工作,V6上编译后定时器数值一直不变化,
如果用V6编译器并且改成16位重载定时器,只要是开启"中断"后定时数值也不变化,也不会进入中断
关闭"中断"后数值会变化.但没用,没中断了.
同样的代码我换成V5的.,却跟手册描述的一样了,正常了. 还有一个问题就是你们官方例程里3个都是需要外部端口触发的. 没有内部自动定时触发中断的例程
页:
[1]