- 博客(5)
- 资源 (7)
- 收藏
- 关注
原创 uCOS-ii之消息队列
在uCOSii中,使用消息队列,先要声明OS_EVENT类型的指针,例如OS_EVENT * q_msg;然后定义一个void 类型的指针数组,如void *Arr_ Msg[SIZE];再使用OSQCreate()将两者联系起来,建立真正的消息队列q_msg=OSQCreate(& Arr_ Msg[0],SIZE);不明白为何OSQCreate()这个函数的形式不设
2016-08-30 14:56:48 1864
原创 OSIntEnter() 与 OSIntExit()
在uC/OS-II中,通常在进入中断时需要使用OSIntEnter() ;退出中断前使用OSIntExit();分析一下OSIntEnter() 的代码void OSIntEnter (void){ if (OSRunning == OS_TRUE) { if (OSIntNesting < 255u) { OSIntNesting+
2016-08-29 09:38:33 17424
原创 汇编中的立即数存在哪
最常见的汇编指令: MOV R0, #1 MOV RO, R1 老师告诉我们,第一条指令的意思是将立即数1传送到R0这个寄存器;第二条指令的意思是将R1的内容传送到R0。十分容易理解。 我们知道,R1的内容本来存储在R1这个通用寄存器里面,那么,对于第一条指令,立即数1存放在哪里呢? 其实立即数就存放在指令里。 MOV这类数据处理指令,格式为: xxxx000a aa
2016-08-19 11:07:33 9182 1
原创 数据传输中的双内存池使用
在使用串口或者其他接口进行传输数据时,通常我们会开辟一段内存空间以供作缓冲。假设,现在,程序开辟了一段内存A,某一时刻程序往A写待发送的数据,如果这时串口需要发送数据,必须等待A1写完,否则发送的数据将不是所期望的,并且,APP要么停下来等待串口,要么将待发送数据保存下来然后继续做事:这并很影响程序的健壮性。有一种解决方法是使用环形队列。环形队列需要一段内存,一个读指针,一个写指针,以及一
2016-08-18 14:53:03 527 1
原创 结构体对齐
要了解结构体对齐 ,必须要知道:基本变量如 CHAR、INT 也是存在对齐问题,并且,对齐是以空间换速度,可以用命令(如#pragma pack(n))进行n字节对齐或解除对齐;编译器会根据不同的系统进行默认对齐。万变不离其宗,默认的对齐准则是:基本变量的存放地址能整除 基本变量的宽度(比如32位机的int为32/8=4,这里是以字节为单位);对于结构体,其首地址能整除 体内最大的
2016-08-17 09:13:58 374
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人