21ic问答首页 - 航顺单片机程序总是死
航顺单片机程序总是死
铁头娃6662021-09-08
程序死在了自带库的微秒延时
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;
}
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;
}
赞0
别迷信库,别说航顺这样的企业,新唐的库算不错了吧BUG都是一大堆,小了,给你来个莫名其妙的警告,也许不影响使用,但恶心死你,大了,直接卡BUG,凡用不利索的,哪怕自己理解有错,直接寄存器操作就好,不用固执。
咱是解决自己应用问题的,不是给他们找BUG的。还记得当年的STM8 003,ST公司的官方IIC库和硬件IIC,你用起来只有4个字:“欲仙欲死”,直接改软IIC,速度可以达到,关键是绝对不会出错。缺点不就是多了几行代码嘛。
评论
2021-09-10
赞0
if(usCnt < 2) return ERROR; //一般头文件里定义有ERROR = 0。小于2最小时间是避免刚设置好值就进入中断
评论
2021-09-09
应该不是,我又看了下,而且航顺的库中没有你说的这句代码,我还在找问题
赞0
评论
2021-09-09
usCnt这个参数为零,整个子函数运行出错了
赞0
评论
2021-09-08
您需要登录后才可以回复 登录 | 注册