摘要:
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 阅读全文