高级会员

- 积分
- 581
- 金钱
- 581
- 注册时间
- 2019-8-6
- 在线时间
- 132 小时
|
20金钱
本帖最后由 lyy26655 于 2021-3-24 10:34 编辑
有以下几个问题,请各位大佬指正,谢谢:
1)在定时器内设标志位,每3分钟通过串口A发送一次数据,每1分钟通过串口B通过开关切换器74HC4052接收4次数据,那如果在第3分钟的时候,串口B正好进入了中断处理,此时串口A发送不了数据,
这个怎么解决呢?靠把B的中断优先级降低可以解决吗?
2)关于while(1)里函数是否能执行完的问题
各个任务A B C D时长见图,
如果ABC三个函数运行时间都非常短,假设有一个SystemTask()里面同时运行ABC三个函数,但时间比较长,请问:while(1)是会执行完三个函数TaskA TaskB TaskC再执行下一次while里的SystemTask(),
还是执行不完,假设时间只够TaskA TaskB,TaskC是不是就执行不了呢?
3)假设数组uint8_t datalenth[]={0x03,0x00,0x15} 目前0x15这个数据是一串字符串uint8_t data人工数出来再转为16进制的长度,想请问怎么通过
strlen(data)得出data的长度,并转为16进制,加上0x前缀,赋值到数组元素datalenth[2]里呢?
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
刚刚搜索到的 关于多任务可参考此博文:https://blog.csdn.net/firehood_/article/details/7791225
|
-
最佳答案
查看完整内容[请看2#楼]
首先除非你的数据量特别大,一般串口发送也就几毫秒的事,所以a顶多等个几毫秒就能发送,应该不会影响使用。如果确保发,那就设置下优先级,也可以通过dma方式发送。
其次问题2如果是多任务,这得分任务优先级了,高优先级的任务会挤占低优先级的任务的执行时间,但是所有任务都会执行,现在一般不会出现饿死任务的情况,除非自己的bug。
问题3就没太看懂,你是要保存0x15这个字符串吗?
|