最近在项目开发中,使用的裸机开发,因为之前学过freertos,想着把项目移植一个实时操作系统,移植前发现rttread官网的资料更全,更适合长期去使用以及学习,因此将项目移植到rttread上面。
移植的过程中,遇到了一些问题,比如多线程优先级如何设定,线程如何增加延时,信号量参数设定等等,都是基础问题,学习新内容的时候,就是在学习新的规则,如果想不通,就认为自己在遵守一些规则,而这些规则不以你的想法而改变。
项目用到了编码器,编码器有的转两次一个周期,有的转一次一个周期,这里的处理逻辑要根据硬件不同的情况去编写。在裸机中编码器的代码调试好后,相同的逻辑移植到了rtt上(函数肯定是不同的,但实现目标和逻辑不会变),移植过后发现编码器不好使,但是硬件和应用层逻辑并不存在问题。
查阅资料发现,相同的逻辑在rtt和keil中实现是不同的,忽略了底层的逻辑,因为习惯了应用层的调用。问题出现在了pin设备的中断使能和禁用里面。
在调用 rt_pin_irq