02 2015 档案
摘要:信号量的操作及原理 1.OSSemCreate创建信号量semaphore 在使用信号量之前,要先用OSSemCreate创建一个信号量,并通过返回的合法事件结构体指针使用信号量。 OS_EVENT *OSSemCreate(INT16U cnt) { #if OS_CRITICAL_METHOD
阅读全文
摘要:1 LES BX, DWORD PTR DS:_OSTCBCur ;OSTCBCur->OSTCBStkPtr = SS:SP!!! 2 MOV ES:[BX+2], SS ;将当前SS(栈的基地址)寄存器值存放至当前任务控制块的2,3内存单元 3 MOV ES:[BX+0], SP ;将当前SP(
阅读全文
摘要:uCOS2唯一值得学习的一个地方就是关于进程调度的O(1)算法: 最简单也是最愚蠢的方法是维护一个链表List。 这种方法的问题是:当一个Thread就绪时,如果根据其优先级插入List,则算法的时间复杂度为O(n)。 Linux采用了Bitmap,uCOS2也不例外。当然uCOS2的处理更简单,因
阅读全文
摘要:人们根据需要把一些功能模块(蓝牙、GPRS、TCP/IP通信模块等等)与MCU进行有机的结合,制造出集成度更高的系统级的芯片。 SoC是System on Chip的缩写,直译是“芯片级系统”,通常简称“片上系统”。因为涉及到“Chip”,SoC身上也会体现出“集成电路”与“芯片”之间的联系和区别,
阅读全文
摘要:其实很简单: 临界段就是不可中断的程序段,比如从UART中读取当前传递回来的值,如果有UART中断,此时这个值又会改变。同样临界段就是保护这类全局变量,如在读取时间节拍时,不应该被时钟更新时钟节拍标志。 实现方法:就是关中断而已。 关中断有3种情况: 1:虽关了中断还是可以有中断产生,那就是临界段本
阅读全文
摘要:今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS、IP寄存器没有出栈和入栈指令,所以只能引发一次中断,自动将CS、IP寄存器压入堆栈,再利用中断返回,将新任务的任务断点指针弹出到CPU的CS
阅读全文
摘要:什么是DMA DMA,Direct Memory Access,直接内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只需要向DMA控制器下达指令,传输数据由DMA来完成,数据传送完再把信息反馈给CPU,这样能够减少CPU的资源占有率。DMA由硬件实现,从共用系统
阅读全文
摘要:特性: (1)USART只能一位一位地发送和接受数据,在起始位期间,TX端处于低电平;当闲置时,TX端为高。 (2)发送和接受由一共用的波特率发生器驱动,当发送器和接收器的使能位分别置位时,分别为其产生时钟。 (3)发送器根据M位的状态发送8位或9位的数据字。当发送使能位TE被置位时,发送移位寄存器
阅读全文
摘要:波特率的计算 STM32下的波特率和串口外设时钟息息相关,USART 1的时钟来源于APB2,USART 2-5的时钟来源于APB1。在STM32中,有个波特率寄存器USART_BRR,如下: STM32串口波特率通过USART_BRR进行设置,STM32的波特率寄存器支持分数设置,以提高精确度。U
阅读全文
浙公网安备 33010602011771号