uCOS II 在LPC11C14上面的移植方法
电子文档:http://download.csdn.net/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? |