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

stm32l4xx_hal_uart.c文件中的_HAL_LOCK(huart)函数怎么理解?什么.....

[复制链接]
liangliangwa 提问时间:2017-6-19 17:56 /
在STM32L4xx的HAL库里面的stm32l4xx_hal_uart.c文件中HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)函数里有__HAL_LOCK(huart);和__HAL_UNLOCK(huart);配合使用的,具体是什么作用?为什么要在这个函数里面添加这样的代码?
<
收藏 评论12 发布时间:2017-6-19 17:56

举报

12个回答
moyanming2013 最优答案 回答时间:2017-6-22 16:35:43
看到有些貌似“正确”的回复(还有附和声)我不免想纠正下!请下结论前一定要看足够的资料来支撑自己的结论。
__HAL_LOCK()以及__HAL_UNLOCK()是用于非操作系统(或可以理解为单线程内)的对公共资源访问的一种保护。
多线程中上述LOCK函数没作用(用了也会有潜在风险),需要使用RTOS的比如:事件、信号量、临界区、互斥量等等来实现对公共资源的保护。LOCK等函数和RTOS中的概念是完全不同的,更不是相等的!
看HAL里面的代码也应该有所思吧:
QQ截图20170622162726.jpg
Dandjinh 回答时间:2017-6-19 20:56:49
这设计到多任务中函数重入和资源争夺的问题
__HAL_LOCK();其实就是OS中的互斥变量mutex,用来保证资源的使用唯一性

评分

参与人数 1ST金币 +5 收起 理由
MrJiu + 5 赞一个!

查看全部评分

mark0668 回答时间:2017-6-19 22:31:33
楼上正解
liangliangwa 回答时间:2017-6-22 14:53:16
Dandjinh 发表于 2017-6-19 20:56
这设计到多任务中函数重入和资源争夺的问题
__HAL_LOCK();其实就是OS中的互斥变量mutex,用来保证资源的使 ...

看到串口库函数中,有好多的函数里面都要对串口所抽象出来的变量进行操作的时候,都会在之前和之后加这样互斥的操作,为什么要这样做?
liangliangwa 回答时间:2017-6-22 14:53:56
Dandjinh 发表于 2017-6-19 20:56
这设计到多任务中函数重入和资源争夺的问题
__HAL_LOCK();其实就是OS中的互斥变量mutex,用来保证资源的使 ...

非常感谢你的回答!
liangliangwa 回答时间:2017-6-22 14:54:45

是的,感谢来过~
liangliangwa 回答时间:2017-6-26 09:30:09
moyanming2013 发表于 2017-6-22 16:35
看到有些貌似“正确”的回复(还有附和声)我不免想纠正下!请下结论前一定要看足够的资料来支撑自己的结论 ...

非常感谢你的回答,目前我是加了μC/OS的,所以采用了将USE_RTOS=1,然后将__HAL_CLOK和__HAL_UNCLOCK宏定义为空了。
moyanming2013 回答时间:2017-6-26 11:34:49
liangliangwa 发表于 2017-6-26 09:30
非常感谢你的回答,目前我是加了μC/OS的,所以采用了将USE_RTOS=1,然后将__HAL_CLOK和__HAL_UNCLOCK宏 ...

恩,还好你没有受到“误导”。
多看、多思考,对别人的回复总是抱怀疑态度。
电小龙 回答时间:2017-11-27 10:42:26
liangliangwa 发表于 2017-6-26 09:30
非常感谢你的回答,目前我是加了μC/OS的,所以采用了将USE_RTOS=1,然后将__HAL_CLOK和__HAL_UNCLOCK宏 ...

为什么我按照你的方法改过之后编译提示出错,错误为error directive :"USE_RTOS should be 0 in the current HAL release",我用的是FREERTOS
12下一页

所属标签

相似问题

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