uCOS II 在LPC11C14上面的移植方法
电子文档:http://download.youkuaiyun.com/detail/icegoly/5449031
3.0.1 NVIC_INT_CTRL:中断控制和状态寄存器 12
3.0.2 NVIC_SCB_SHPR3系统处理程序优先级寄存器 14
3.5 OS_CPU_PendSVHandler pendsv异常处理 18
A:获取任务的SP,如果为0 的话则 直接跳到 OS_CPU_PendSVHandler_nosave,去执行 18
第一:OS_CPU.H的移植
1.1 定义与编译器有关的数据类型
| typedef unsigned char BOOLEAN; /* boolean */ typedef unsigned char INT8U; /* Unsigned 8 bit quantity 无符号8位整型变量 */ typedef signed char INT8S; /* Signed 8 bit quantity 有符号8位整型变量 */ typedef unsigned short INT16U; /* Unsigned 16 bit quantity 无符号16位整型变量 */ typedef signed short INT16S; /* Signed 16 bit quantity 有符号16位整型变量 */ typedef unsigned int INT32U; /* Unsigned 32 bit quantity 无符号32位整型变量 */ typedef signed int INT32S; /* Signed 32 bit quantity 有符号32位整型变量 */ typedef float FP32; /* Single precision floating point 单精度浮点数(32位长度) */ typedef double FP64; /* Double precision floating point 双精度浮点数(64位长度) */ typedef unsigned int OS_STK; /* Each stack entry is 32-bit wide 堆栈是32位宽度 */ typedef unsigned int OS_CPU_SR; /* Define size of CPU status register (PSR = 32 bits) */ |
1.2 定义中断的实现方式
| 为了处理临界区代码,必须关中断,等处理完毕后,再开中断。关中断可以避免其他任务或中断进入临界区代码。uC/OS-II定义了这两个宏来实现,但注意一条:调用uC/OS-II功能函数时,中断应该总是开着的。 1)当OS_CRITICAL_METHOD= = 1时,简单实现如下: 3)当OS_CRITICAL_METHOD= = 3时,实现如下: ==================== view plaincopy to clipboardprint? OS_ENTER_CRITICAL(); |

本文详细介绍了如何将实时操作系统uCOS II移植到LPC11C14微控制器上,包括OS_CPU.H、OS_CPU_C.C和OS_CPU_A.S三个部分的移植步骤。主要内容涉及中断处理、任务堆栈初始化、任务切换函数等,并对PendSV异常在任务切换中的作用进行了深入解析。
最低0.47元/天 解锁文章
893

被折叠的 条评论
为什么被折叠?



