航顺单片机程序总是死

[复制链接]
3361|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 | 显示全部楼层

航顺单片机程序总是死

雅特力不会,找我
一事无成就是我 发表于 2021-9-9 12:48 | 显示全部楼层
找谁都没有用,你看以下是不是你的计数时钟没有打开

评论

usCnt这个参数为零,整个子函数运行出错了  发表于 2021-9-9 15:44
一事无成就是我 发表于 2021-9-9 22:23 | 显示全部楼层
你不会告诉我你传递的时间参数是0吧,延时函数那里加一句容错:
if(usCnt < 2)  return   ERROR;   //一般头文件里定义有ERROR = 0。小于2最小时间是避免刚设置好值就进入中断

评论

应该不是,我又看了下,而且航顺的库中没有你说的这句代码,我还在找问题  发表于 2021-9-10 14:18
tianxj01 发表于 2021-9-10 17:13 | 显示全部楼层
本帖最后由 tianxj01 于 2021-9-10 17:15 编辑

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

本版积分规则

3

主题

23

帖子

2

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