完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
从定时器3中断发送信号量到一个任务,定时中断还没有再次到来,怎么这个任务还是能获取到信号量,执行几次任务。我用的keil软件仿真。
不知道是不是定时器中断标志清除有问题,望大家给予建议,先谢谢了 /***********************数据产生任务TASK_DATA_GENERATE**********************/ void TsakDataGenerate(void *pdata) { u8 err; pdata=pdata; while(1) { OSSemPend(DATASem,0,&err); //等待DATASem信号量 datagenerater=datagenerater+0x10; OS_ENTER_CRItiCAL(); //关中断 printf("进入TaskDataGenerate任务处理****"); printf("数据输出: 0x%x n",(u8)datagenerater); printf("TaskDataGenerate任务处理完毕!**** n"); printf("n"); OS_EXIT_CRITICAL(); //开中断 OSTimeDlyHMSM(0,0,0,10); } } /***************定时器3中断服务程序*******************/ void TIM3_IRQHandler(void) { OS_ENTER_CRITICAL(); //关中断 //OSIntEnter(); if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查TIM3更新中断发生与否 { TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //清除TIMx更新中断标志 //LED1=!LED1; } OS_EXIT_CRITICAL(); //开中断 //OSIntExit(); timer_IT_cnt++;//定时器3--定时中断计数 printf("进入定时器3中断处理:第 %d 次 n",timer_IT_cnt); //printf("定时器3中断处理完毕! n"); printf("n"); OSSemPost(DATASem); //发送DATASem信号量 } 打印结果: |
|
相关推荐
9个回答
|
|
|
|
|
|
原子大哥,不能用中断触发一个任务吗?
|
|
|
|
原子大哥:还有个问题,优先级高的任务,在没有等到信号量到来时,也会执行任务,奇怪。
//任务4 void TsakDataGenerate(void *pdata) { u8 err; u8 i=0; pdata=pdata; while(1) { OSSemPend(DATASem,0,&err); //等待DATASem信号量 datagenerater=datagenerater+0x10; i++; OS_ENTER_CRITICAL(); //关中断 printf("进入TaskDataGenerate任务处理****"); printf("数据输出: 0x%x n",(u8)datagenerater); printf("任务4执行第 %d 次 n",i); printf("TaskDataGenerate任务处理完毕!**** n"); printf("n"); OS_EXIT_CRITICAL(); //开中断 //OSTimeDlyHMSM(0,0,0,200); } } |
|
|
|
|
|
|
|
提出以下建议,可能不全面:
1、事件驱动,不需要额外的延时。 2、中断系统[ENTER/EXIT]调用屏蔽会引发异常。 3、不要滥用临界段,比如此中断内,没有嵌套调用的可能。 4、OSSemPost()用法没问题,正确,详见API手册。 |
|
|
|
谢谢stylenol!有个问题请教下你。
我用keil 4进行仿真的时候,一个任务(这个任务不使用OSTimeDlyHMSM(0,0,0,200);函数,只等待信号量,我看书上说没有等到信号量,任务就挂起)等待另外一个发送信号量,仿真发现,信号量没有到来,这个任务也会执行。而且就算任务发送信号量后,我看信号量里面的事件计数没有任何变化。 不知道怎么回事? |
|
|
|
注意检查Error返回代码
|
|
|
|
OSSemPost(DATASem); 在中断中不会进行任务调度吧?可能是其他原因。
|
|
|
|
你发送这个信号量就可能引起任务调度了。
|
|
|
|
只有小组成员才能发言,加入小组>>
809 浏览 0 评论
1161 浏览 1 评论
2535 浏览 5 评论
2871 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2719 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1100浏览 3评论
198浏览 2评论
464浏览 2评论
378浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
459浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 08:15 , Processed in 1.298970 second(s), Total 94, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号