你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 14301|回复: 30

STM32的HAL库的HAL_Delay问题和UART接受数据问题

[复制链接]

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
发表于 2015-1-12 18:35:50 | 显示全部楼层 |阅读模式

void HAL_IncTick(void)
{
  uwTick++;
}
中断函数是1ms进来一次,也就是说uwTick+1就代表1ms
void SysTick_Handler(void)
{
  HAL_IncTick();
}
void HAL_Delay(__IO uint32_t Delay)
{
  __IO uint32_t timingdelay;

  timingdelay = uwTick + Delay;
  //while(HAL_GetTick() < timingdelay)
        while(uwTick < timingdelay)
  {;
  }
}
在HAL库里 我就没看到哪里对uwTick溢出进行处理,也就是说uwTick=0xffffffff的时候 再加1就是uwTick=0了  那这一时刻的延时不就延时不准确了吗?



回复

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-13 12:46:09 | 显示全部楼层
在HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)函数里使能的 是   __HAL_UART_ENABLE_IT(huart, UART_IT_TC);传输完成中断  这里发送数据不应该是    __HAL_UART_ENABLE_IT(huart, UART_IT_TXE);  传输数据寄存器空中断才对
很费解 求解答
回复 支持 反对

使用道具 举报

24

主题

514

回帖

6

蝴蝶豆

金牌会员

最后登录
2019-4-8
发表于 2015-1-13 12:57:51 | 显示全部楼层
你用的是滴答定时器延时,看一下滴答定时器介绍就明白了
回复 支持 反对

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-13 14:01:18 | 显示全部楼层
巅峰残狼 发表于 2015-1-13 12:57
你用的是滴答定时器延时,看一下滴答定时器介绍就明白了

这里的滴答定时器 只是1ms中断一次 就是说1ms uwTick加1 这并没有把我的问题解决
回复 支持 反对

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-14 15:03:45 | 显示全部楼层
顶一个!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-29 17:31:21 | 显示全部楼层
uint32_t HAL_GetTick(void)
{
  return uwTick;  
}  
这函数,很多库文件调用,用来timeout 延时
我觉得调用了uint32_t HAL_GetTick(void)函数的延时都是有问题的
不过我算了一下 要连接上电46天多才会出现bug (0xffffffff个ms)
回复 支持 反对

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-29 17:33:57 | 显示全部楼层
这ST官方库的bug  不小
所有文件都涉及到这延时  延时的bug
回复 支持 反对

使用道具 举报

10

主题

447

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-4-28
发表于 2015-1-29 17:42:02 | 显示全部楼层
嗯,延时这个确实是个bug
回复 支持 反对

使用道具 举报

48

主题

609

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-3
发表于 2015-1-30 09:33:38 | 显示全部楼层
真是bug吗?关注。以后再测。

二十四节气~大雪

二十四节气~大雪
回复 支持 反对

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

初级会员

最后登录
2019-4-10
 楼主| 发表于 2015-1-30 10:50:00 | 显示全部楼层
而且这bug不好改! 太多的地方调用uint32_t HAL_GetTick(void)函数了,,又不能随便给uwTick;清零
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版