FreeRTOS与STM32F7的HAL库中tick定时是怎么联系的

snow_shirley 2018-06-04 06:07:17
我用的是STM32F746+FreeRTOS。
现在在调试CAN,正常收发模式下,当不接另一个节点时,CAN发送就进入stm32f7xx_hal_can.c中的下面这个死循环--->
/* Check End of transmission flag */
while(!(__HAL_CAN_TRANSMIT_STATUS(hcan, transmitmailbox)))
{
/* Check for the Timeout */
if(Timeout != HAL_MAX_DELAY)
{
if((Timeout == 0U)||((HAL_GetTick() - tickstart ) > Timeout))
{
hcan->State = HAL_CAN_STATE_TIMEOUT;

__HAL_CAN_CANCEL_TRANSMIT(hcan, transmitmailbox);

/* Process unlocked */
__HAL_UNLOCK(hcan);
return HAL_TIMEOUT;
}
}
}
其中Timeout = 10.
HAL_GetTick()的值貌似是不变。
FreeRTOS操作系统移植中写了
void vApplicationTickHook(void)
{
HAL_IncTick();
}
并定义了
#define configUSE_TICK_HOOK 1
请问:
1、freertos操作系统里的xTickCount和HAL库里的uwTick是怎么联系的,
2、CAN进入死循环的问题跟这个有关系吗?可能还有其他原因吗?
...全文
2169 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
john_liqinghan 2018-08-30
  • 打赏
  • 举报
回复
HAL_IncTick();这个函数应该是在systick中断面里每隔1ms自加的函数。
是否你有中段异常,导致系统tick中断获取不到执行时间。

21,595

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧