俺还活着

    1. 单纯的使用串口中断,成功接收一个数,触发中断,在中断函数中将数据读出,这种方法如果在串口接收数据没有处理完后,串口又来了新的数据,新的数据就会覆盖尚未处理完的数据,就会丢包,因为数据没有缓存;如果使用数字来接收数据,每收到一个数据,数组下标偏移,虽然一定程度上起到了缓存的效果,但是数组的空间会一直占用,即使已经处理的数据仍然会占用数据空间。因此使用作者的环形队列可以比较好的解决这两个问题。
    2. 任务1,按键扫描,时间片定时去检测按键,识别到的按键值放到按键FIFO消息队列 任务2,任务处理,从按键队列中获取消息,如果按键消息队列中数据变化就进行处理,否则等待 任务3,显示任务,定时刷新显示内容
    3. vTaskDelay是相对延时函数,当函数调用vTaskDelay函数后就会进入阻塞状态。当进入阻塞状态后,其他任务就会被执行。 1、在阻塞的情况时,优先级高的出现等待信号量或者消息队列,必须到达指定的timeout后才能被抢占 2、在任务执行时,发生了中断或者被高优先级任打断,那么任务的执行时间就会边长,而等执行vTaskDelay()时,相对时间不会改变,所以总时间变长  
    4. 任务的切换主要是对栈的开销,保存任务时将此任务的寄存器压入这个任务的独立栈中,切换到下一个任务,将此任务从栈中弹出,将任务的寄存器弹入到CPU中
    5. 自动售卖机 1、人机交互任务:按键扫描,LCD显示,声音反馈,优先级较低 2、无线数据传输任务:wifi模块GPS模块,检测服务器是否离线,切换运营商网络等,优先级最高 3、串口数据传输任务:需要发送一帧数据时,该任务被创建,并且监听返回的数据,若超时未收到数据回复,重发,大于重发次数及接收数据完成后任务删除,优先级较高。 4、串口数据接收任务:时间片轮询串口接收缓存区,解析数据,并创建动作执行任务,优先级较高。 5、动作执行任务:此任务被创建后,根据指令执行相应的动作,比如电机运动,电磁阀。 有点是以后项目更改或扩充功能,只需要增加新的任务,便于维护
    6. 信号继电器和功率继电器区别? 10/13577 模拟电子 2018-06-21
      主要看触点容量

最近访客

< 1/1 >

统计信息

已有2人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:6

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言