摘要:
如果需要一条协议来接收多个数据的话,可以这么做: DataHead len1(数据长度1) data1 len2(数据长度2) data2 ....... 校验位 DataTail 程序中可以通过判断,知道数据1的长度,即可获取数据1,紧接着就是数据2的长度,以此类推........ 阅读全文
摘要:
1. 国内大部分教程不是面向新手的,而是给会的人看的。 2. 喜欢用文字去描述现象,文字是一种非常主观的东西。 3. 大学课堂的照本复读和PPT模式,让我觉得课堂也搞形式主义。 为什么我会有这个感触?原因是我最近在自学模拟电路,大部分视频让我觉得十分干涩。直到碰到了一个国外的视频,他使用了动画、举例 阅读全文
摘要:
一般发生这种情况可能是内存越界操作或堆栈溢出。 排查方法: 1.查看LR的值 首先要查看R14(LR)的值,确定当前堆栈指针是MSP还是PSP。 LR = 0xFFFFFFF9 为主堆栈(MSP),LR = 0xFFFFFFFD为线程堆栈(PSP)。 图中为0xFFFFFFF9,即MSP主堆栈。 2 阅读全文
摘要:
复习之前必须说一个关键点 C++这门语言是强类型语言,非常的强调类型。 1. 关键字const 1.0 ) const 非指针 int main() { const int a = 1; int *p = (int *)&a; *p = 10; return 0; } 结果 a = 1 *p = 1 阅读全文
摘要:
如果串口发送了若干个字节后,从一个波特率切换至另一个波特率的时候,应该要延时一会,否则刚刚串口发送的最后一个字节可能会有错误 阅读全文
摘要:
空闲接收中断的原理就是在一个字节时间内如果没有收到数据,那么就认为传输结束并触发中断。这个我认为非常依赖于对方的发送时间,如果另一个设备在发送的时候,稍微延时了一点点,就会出现数据接收不完整。建议还是使用定时器模式来接收不定长的数据。 阅读全文
摘要:
本文以串口4为例子: 在APB1为72MHz的时钟频率下,是设置不了300波特率的,原因在于 Tx/Rx baud = fck / (16 * reg_value) ,reg_value是写进USART_BRR寄存器里。 比如我们要设置300波特率, reg_value = 72000000/ (1 阅读全文
摘要:
1. 下载FreeRTOS https://sourceforge.net/projects/freertos/files/FreeRTOS/ 一般下载V9.0.0版本比较稳定。 2. 解压 我们需要几个文件 1) 在FreeRTOSv9.0.0/FreeRTOS/Source/下的所有C文件(PS 阅读全文
摘要:
今天在某QQ群里看到有人讨论这个问题,正巧我也仔细想了一下。以下是我对这个问题的看法 1.RTOS的RT这词就是实时的意思,网上很多归纳总结都说RTOS要用在实时性很高的项目,怎么才算是实时性高呢? 假设我们裸机有下面这个段程序 int main() { sys_init(); while(1) { 阅读全文
摘要:
上一次定的目标只有2、5、6完成了,要是目标能全部完成,就不叫目标了,哈哈哈,我是懒癌重症病人。今年二月、五月接手了公司两个项目,学到挺多东西的,下班回家挺不想看代码的,没怎么动。 今年的目标我打算现实一点。 1.继续在FreeRTOS上做应用(智能花盆)。 2.搭建环境、使用、学习K210,接触嵌 阅读全文