打印

航顺单片机程序总是死

[复制链接]
2958|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
铁头娃666|  楼主 | 2021-9-8 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序死在了自带库的微秒延时
void BSP_SYSTEM_Delay_us(uint32_t usCnt)
{
        /* SysTick default clock source: HCLK/8 = 32MHz/8 = 4MHz */
        SysTick->LOAD = 4 * usCnt;
       
        /* Clear SysTick current counter value */
        SysTick->VAL = 0;

        /* Enable SysTick counter */
        SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
       
  /* Wait for SysTick counter to 0 */        while (!(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk))//死在这一部
        {
        }
       
        /* Disable SysTick counter */
        SysTick->CTRL = ~SysTick_CTRL_ENABLE_Msk;
       
        /* Clear SysTick current counter value */
        SysTick->VAL = 0;
}

使用特权

评论回复

相关帖子

沙发
Q419461871| | 2021-9-8 18:03 | 只看该作者

航顺单片机程序总是死

雅特力不会,找我

使用特权

评论回复
板凳
找谁都没有用,你看以下是不是你的计数时钟没有打开

使用特权

评论回复
评论
铁头娃666 2021-9-9 15:44 回复TA
usCnt这个参数为零,整个子函数运行出错了 
地板
你不会告诉我你传递的时间参数是0吧,延时函数那里加一句容错:
if(usCnt < 2)  return   ERROR;   //一般头文件里定义有ERROR = 0。小于2最小时间是避免刚设置好值就进入中断

使用特权

评论回复
评论
铁头娃666 2021-9-10 14:18 回复TA
应该不是,我又看了下,而且航顺的库中没有你说的这句代码,我还在找问题 
5
tianxj01| | 2021-9-10 17:13 | 只看该作者
本帖最后由 tianxj01 于 2021-9-10 17:15 编辑

别迷信库,别说航顺这样的企业,新唐的库算不错了吧BUG都是一大堆,小了,给你来个莫名其妙的警告,也许不影响使用,但恶心死你,大了,直接卡BUG,凡用不利索的,哪怕自己理解有错,直接寄存器操作就好,不用固执。
咱是解决自己应用问题的,不是给他们找BUG的。还记得当年的STM8 003,ST公司的官方IIC库和硬件IIC,你用起来只有4个字:“欲仙欲死”,直接改软IIC,速度可以达到,关键是绝对不会出错。缺点不就是多了几行代码嘛。

使用特权

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

本版积分规则

2

主题

21

帖子

2

粉丝