搜索

[技术问答] HC32F003基本定时器中断

[复制链接]
228|20
 楼主 | 2021-2-21 11:29 | 显示全部楼层 |阅读模式
刚接触到华大的芯片,小新一枚,请大家多多关照
使用HC32F003的基本定时器,去官网上也下载了例程,下载到自己的板子上发现无法进入中断,网上搜没有帖子作参考,自己琢磨了一天也没用,还请大家帮我看看
void Tim2_IRQHandler(void)
{
        Gpio_WriteOutputIO(LEDRed_GPIO,TRUE);
    if (TRUE == Bt_GetIntFlag(TIM2))
    {
        Bt_ClearIntFlag(TIM2);
        timer.time1++;
        if(timer.time1>30000)
        timer.time1=0;
    }
}
void BaseTime_Init(void)
{
    stc_bt_cfg_t   stcCfg;
    uint16_t       u16ArrData = 0xf000;
    uint16_t       u16InitCntData = 0xC000;
    DDL_ZERO_STRUCT(stcCfg);
    Sysctrl_SetPeripheralGate(SysctrlPeripheralBt, TRUE);//打开BT外设时钟
    stcCfg.enGateP = BtPositive;                        //门控极性控制
    stcCfg.enGate  = BtGateDisable;                //门控使能
    stcCfg.enPRS   = BtPCLKDiv8;                        //预除频配置
    stcCfg.enTog   = BtTogDisable;                //反转输出使能
    stcCfg.enCT    = BtTimer;                                        //定时/计数功能选择
    stcCfg.enMD    = BtMode2;                                        //计数模式配置
    Bt_Init(TIM2, &stcCfg);//Bt初始化
        //设置重载值和计数值,启动计数
    Bt_ARRSet(TIM2, u16ArrData);
    Bt_Cnt16Set(TIM2, u16InitCntData);
    Bt_Run(TIM2);
    //TIM2中断使能
    Bt_ClearIntFlag(TIM2);
    Bt_EnableIrq(TIM2);
    EnableNvic(TIM2_IRQn, IrqLevel2, TRUE);
}

就这些代码,没其他的了
528696031d1a0ea389.png

使用特权

评论回复
| 2021-2-22 17:59 | 显示全部楼层
这个配置应该没什么问题,不过一般是先使能中断,再启动timer
25219603380824c950.png

使用特权

评论回复
| 2021-2-22 19:08 | 显示全部楼层
感觉是其他问题导致的,代码没有看出什么问题。参考官方的例程看一看。

使用特权

评论回复
| 2021-2-22 21:58 | 显示全部楼层
是不是有什么特殊的设置,或者硬件问题

使用特权

评论回复
| 2021-2-22 23:23 | 显示全部楼层
定时器中断是一个比较基本的应用。

使用特权

评论回复
| 2021-2-22 23:26 | 显示全部楼层
还有IO中断。也相当基础。

使用特权

评论回复
 楼主 | 2021-2-23 11:44 | 显示全部楼层
martinhu 发表于 2021-2-22 17:59
这个配置应该没什么问题,不过一般是先使能中断,再启动timer

我试了一下,还是不行,中断进不去

使用特权

评论回复
 楼主 | 2021-2-23 11:45 | 显示全部楼层
余三水 发表于 2021-2-22 19:08
感觉是其他问题导致的,代码没有看出什么问题。参考官方的例程看一看。

这个代码就是官方代码拷贝下来的,我也把官方的代码原封不动的编译下到芯片中去,结果一样没进入中断

使用特权

评论回复
 楼主 | 2021-2-23 11:47 | 显示全部楼层
yiyigirl2014 发表于 2021-2-22 21:58
是不是有什么特殊的设置,或者硬件问题

我也不知道有啥特殊设置,文档上说的很简单,网上搜也搜不到,外围啥电路都没有,就一个单片机,我都换了好几个芯片了,结果一样,就是进不了中断

使用特权

评论回复
 楼主 | 2021-2-23 17:16 | 显示全部楼层
martinhu 发表于 2021-2-22 17:59
这个配置应该没什么问题,不过一般是先使能中断,再启动timer

我将定时器的计数寄存器的值输出一下看看,结果发现值为初始值,定时器就没有成功运行过

使用特权

评论回复
| 2021-2-24 20:10 | 显示全部楼层
清醉风尘 发表于 2021-2-23 17:16
我将定时器的计数寄存器的值输出一下看看,结果发现值为初始值,定时器就没有成功运行过 ...

如果程序没问题,是不是板子有问题??

使用特权

评论回复
| 2021-2-25 10:51 | 显示全部楼层
建议对比一下官方例程

使用特权

评论回复
| 2021-2-25 17:36 | 显示全部楼层
最好把整个工程打包发出来看看

使用特权

评论回复
| 2021-2-26 12:54 | 显示全部楼层
楼主后来是怎么解决的

使用特权

评论回复
 楼主 | 2021-2-26 14:14 | 显示全部楼层
豌豆爹 发表于 2021-2-25 10:51
建议对比一下官方例程

就是官方原版程序,除了编译一下就下载到芯片里,其他都没动,仿真显示卡在检测中断的死循环里了,定时器里的寄存器数值就没任何变化,定时器根本就没启动,PWM也是如此,根本无法产生。

使用特权

评论回复
 楼主 | 2021-2-26 14:17 | 显示全部楼层
martinhu 发表于 2021-2-24 20:10
如果程序没问题,是不是板子有问题??

我板子上其他功能都可以,唯独定时器无法启动中断,与定时器相关的PWM也无法运行。串口通讯的波特率产生就是用的定时器,这个是可以,不知道为啥

使用特权

评论回复
 楼主 | 2021-2-26 14:18 | 显示全部楼层
kinto 发表于 2021-2-26 12:54
楼主后来是怎么解决的

使用滴答定时器,基本定时器和高级定时器基本报废,PWM也无法产生,也只能用IO口模拟了

使用特权

评论回复
| 2021-3-1 10:05 | 显示全部楼层
清醉风尘 发表于 2021-2-26 14:18
使用滴答定时器,基本定时器和高级定时器基本报废,PWM也无法产生,也只能用IO口模拟了 ...

这个问题后来代理没有和你沟通吗?你好像使用的是自建的KEIL工程???但是工程配置里面缺少一个设置,所以中断都进不了……
建议楼主在不熟悉工程配置的时候,使用驱动库样例
4715603c4bc82fd9d.png

使用特权

评论回复
| 2021-3-1 14:23 | 显示全部楼层
GFDSGDSFGFDSGDFSGFDG

使用特权

评论回复
| 2021-3-1 14:23 | 显示全部楼层
HDFSHGDFSGDSGDSGSDFG

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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