完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
不加私人QQ哦,我自己水平也很菜,就简单说一下我自己的理解吧,也不知道对不对,你就当个参考好了。
假设我们有一个数组,Array[10] = {0}, static SemaphoreHandle_t xSemaphore = NULL; Task1函数 { while(1) { xSemaphoreTake(xSemaphore, portMAX_DELAY); 对数组进行操作(写数据); xSemaphoreGive(xSemaphore); taskYIELD(); } } Task2函数 { while(1) { xSemaphoreTake(xSemaphore, portMAX_DELAY); 对数组进行操作(写数据); xSemaphoreGive( xSemaphore ); taskYIELD(); } } 上面对信号量的获取和释放都用不涉及到判断信号量0和1的。 |
|
|
|
实际使用过程中我们不需要去判断0和1吧,只需要在访问资源时候先Take一次信号量,这时相当是把它清空,访问完资源后在give回去就好了呀,感觉和互斥信号量是一样的原理
|
|
|
|
想利用二值信号量来达到一个同步任务的功能。
多个函数给队列写数据,多个同时写怕冲突,所以想用个变量,一个人任务给队列写数据时锁住变量,写好后释放变量。只有变量是释放的状态时,下一个任务才能给队列写数据。 所以想用二值信号量来实现这个功能,但是不知道怎么去实现,方便加个QQ指导一下嘛!嘻嘻 |
|
|
|
二值信号量是一个没有存储区的队列,用队列是否为空来表示二值信号量,而队列是否为空可以通过队列结构体中的成员变量uxMessagesWaiting来判定,这个成员变量具体含义为队列中的消息数,为1表示二值信号量有效,为0表示无效
|
|
|
|
嗯,好吧!那请问下如果想定义一个变量,然后写对队列时锁住变量,写好后释放变量,来判断是否对队列操作完成,应该如何去操作啊
|
|
|
|
只有小组成员才能发言,加入小组>>
818 浏览 0 评论
1162 浏览 1 评论
2536 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2720 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1114浏览 3评论
198浏览 2评论
465浏览 2评论
382浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
462浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 20:19 , Processed in 1.271470 second(s), Total 86, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号