摘要:
线程 test2 的打印信息输出不全,说明 test2 线程的执行被打断了, 因为 test1 线程和 test2线程的优先级都是 15,并不会发生抢占的情况,所以说 test2 线程是等到自己的执行时间片到达时,被系统剥夺了 CPU 使用权,而将使用权交给了 test1 线程,从而 test1 线 阅读全文
摘要:
程序运行分析:1、首先系统调度 test1 线程投入运行,打印第 0 次运行的信息,然后通过延时函数将自己挂起 100 个时间片,系统将 test2 线程调度运行;2、 test2 线程打印第 0 次运行信息,然后通过延时函数将自己挂起 50 个时间片;3、系统中无任务运行,系统将空闲线程调入运行; 阅读全文
摘要:
RT-Thread 实时操作系统核心是一个高效的硬实时核心,它具备非常优异的实时性、稳定性、可剪裁性,当进行最小配置时,内核体积可以到 3k ROM 占用、 1k RAM 占用。 RT-Thread 中的“线程”一般由三部分组成:线程代码(函数)、 线程控制块、 线程堆栈。 /* 指向线程控制块的指 阅读全文
摘要:
#include using namespace std; int func(int c) { cout<<"int func(int c)"<<endl; } int func(char c) { cout<<"int func(char c)"<<endl; } //函数的重载就是函数名相同,根据参数的类型决定调用哪个函数 int main() { int ... 阅读全文
摘要:
这段代码在C语言是编译不通过,因为C语言不支持表达式不赋值;在C++可以编译过。 C++里的a=b=3;与C语言一样,但是C++还有一种写法(a=b)=10,这样的是b的值赋给a,然后又把10赋给a,但是10没有赋给b;这里涉及到运算符重载的知识。 C++ C语言 C++ 阅读全文
摘要:
1、DMA中配置要放在串口的配置后面。 2、DMA有3种中断方式:传输完成、传输一半、传输错误 3、如果要用DMA容易造成串口数据还没发完就把485的控制脚拉低导致数据没发完。解决办法是DMA发送完成中断里加延时(但是中断里延时不好)。 阅读全文
摘要:
在Flash中有一块只读区域,从地址0x780E开始,蓝牙的MAC以小端方式存放在里面。 在TI的Peripheral例程里面,添加一个特征值,只读属性,6字节长度(蓝牙MAC长度为48-bit,6字节)。 蓝牙的MAC是全球唯一的,一般情况下,固件的开发中不会去使用,但也不排除二般情况。 #def 阅读全文
摘要:
Task1的 0处创建了一个信号量mySem,1处获得mySem,执行完PrintStr(),释放mySem,3处才能得到mySem,执行PrintStr();在执行PrintStr假设时间较长Task1任务优先级比较高,可能会抢占Task2,但是由于mySem已经被Task2的3处占用,所以Tas 阅读全文
摘要:
在 simpleBLEPeripheral.c的 #define SBP_PERIODIC_EVT_PERIOD 1000// How often to perform periodic event多久执行周期性事件 设置广播周期时间1000表示每秒广播一次 advertData[]这个就是广播数据 阅读全文
摘要:
HCI_EXT_SetTxPowerCmd()是用来设置发射功率的. 有-23dbm, -6dbm, 0 dbm, +4dbm四个级别. #define LL_EXT_TX_POWER_MINUS_23_DBM 0 // -23dbm 功率 最小#define LL_EXT_TX_POWER_MIN 阅读全文