学校小学期时已经提供了徐成老师的BSP,但有些地方不太能容忍用户(应该说不明所以的学生)的bug行为(比如往各个事件回调函数塞大于最小周期(1ms)的延时函数)
以及自己想乱七八糟的试试单片机底层模块驱动编程,训练自己看引脚图和板卡软件手册的能力,所以就开始写这玩意了
(鱼佬:感觉像写个屎味巧克力冰激凌;我:应该是兼容屎味的巧克力冰淇淋)
适当参考鱼佬的https://github.com/FishyFizz/STC-B-OS
- 2022.10.11 - 完成数码管和led的显示(意味着时间中断也完成了)
- 2022.10.12 - 添加以上回调函数接口
- 2022.10.13 - 完成k1和k2的中断事件回调接口,完成按键的软件消抖
- 2022.10.24 - 完成SM接口(类似GPIO,无事件回调)
- 2022.10.25 - 完成k3和导航键kN的回调(20ms轮询和adc中断完成触发),完成其软件消抖
- 2023.03.02 - 完成USBcom及其回调
- 当前进度:编写调度器
我最早的想法是解决学校的bsp中,不靠谱的使用方(学生)往key的回调函数中塞延时delay函数导致数码管/led无法正常显示的问题,试图在底层完成这点,而在写的时候发现,学校bsp的按键采用轮询,回调函数注册在时间中断中才导致了这个问题。而软件消抖本身也导致了,不人为的编写调度器或者更改内置中断运行,按键的回调必须在时间中断下运行
解决这样的问题目前只剩下两条思路
- 一是从硬件中断运行上入手,让timer0的中断能够自身嵌套
- 二是将 时间外的输入类事件回调 在中断中加入调度队列,系统主线程再运行函数。故而中断中不直接运行事件回调(这比较像OS的做法)
个人倾向于第二条,因此预期实现一个FIFO的调度器(优先级先打咩~)