- 博客(38)
- 资源 (4)
- 收藏
- 关注
原创 Segger RTT深度使用说明-移植-Jlink rtt viewer显示-输出到Secure CRT
RTT( Real Time Terminal)是SEGGER公司新出的可以在嵌入式应用中与用户进行交互的实时终端。J-Link驱动4.90之后的版本都支持RTT。RTT既可以从MCU上输出信息、也可以向应用程序发送信息,由于其高速的特性,所以不影响MCU的实时性。使用RTT可以从MCU非常快速输出调试信息和数据,且不影响MCU实时性。这个功能可以用于很多支持J-Link的设备和MCU,兼容性强。RTT支持两个方向的多个通道,上到主机,下到目标,它可以用于不同的目的,为用户提供尽可能多的自由。
2022-12-01 17:42:41
3981
2
转载 一篇看完弄清大端小端问题
一、大端模式和小端模式的起源 关于大端小端名词的由来,有一个有趣的故事,来自于Jonathan Swift的《格利佛游记》:Lilliput和Blefuscu这两个强国在过去的36个月中一直在苦战。战争的原因:大家都知道,吃鸡蛋的时候,原始的方法是打破鸡蛋较大的一端,可以那时的皇帝的祖父由于小时侯吃鸡蛋,按这种方法把手指弄破了,因此他的父亲,...
2019-03-27 15:35:26
501
转载 IIC时序
AT24C02是由ATMEL公司提供的,IIC总线串行EEPROM(electronic eraser programmer read only memory),其容量为2kbit(256B),工作电压在2.7v"5.5v之间,生产工艺是CMOS。 一般数字芯片都在左下角和右上角为GND,VCC。容量的计算方法:AT24Cxx :01"1024&nbs...
2019-03-19 13:40:35
615
转载 硬件IIC和软件IIC区别
原文地址:https://blog.youkuaiyun.com/Derricker406/article/details/77171223所谓硬件I2C对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的;软件I2C一般是用GPIO管脚,用软件控制管脚状态以模拟I2C通信波形。硬件I2C的效率要远高于软件的,而软件I2C由于不受管脚限制,接口比较灵活。模拟I2C 是通过...
2019-03-19 11:24:59
18641
转载 IIC详解
IIC详解 1、I2C总线具有两根双向信号线,一根是数据线SDA,另一根是时钟线SCL 2、IIC总线上可以挂很多设备:多个主设备,多个从设备(外围 设备)。上图中主设备是两个单片机,剩下的都是从设备。 3、多主机会产生总线裁决问题。当多个主机同时想占用总线时,企图启动总线传输数据,就...
2019-03-19 11:00:17
8190
1
转载 关于STM32单片机GPIO口上拉与下拉输入
以前GPIO上接的电路都是低电平触发的那种,新画了个板子有一个按键设计的是高电平触发,结果IO口设置成上拉输入后,怎么读都不正确,按键电路如图1。无奈只能去调试一下,发现当设置为上拉输入后,其ODR(GPIO输出数据寄存器)相应的也置为1,百思不得其解。图1 按键电路 于是去看一下GPIO的结构图:I/O引脚...
2019-03-19 10:58:26
15385
4
原创 stm32从A程序跳转到B程序的做法
1、Cortex-M3程序结构的问题。2、了解Cortex-M3启动流程。3、Cortex-M3中断向量表问题。4、用Flash写函数来烧写程序,烧写的应该是bin文件而不是hex文件。直接跟你说最快最直接解决方法(我的IAR开发环境下的修改,不知道你是用Keil开发还是IAR开发,这里会有些区别):1、先在B程序代码中修改中断向量表,修改方法,在main函数开始调用NVIC_SetVe...
2019-02-26 10:16:23
4869
1
原创 STM32 Bootloader程序中Jump2App函数分析
Jump2App函数代码#define __IO volatile /*!< defines 'read / write' permissions */#define ApplicationAddress 0x8003000pFunction Jump_To_Application;uint32_t JumpAddress;...
2019-02-25 16:59:21
12391
5
转载 智能家居与人工智能
一天忙碌的工作下班后,你来到家门口,指纹/人脸识别开门,房间自动亮起一室温暖明亮的光,放下公文包,自然而然的走向冰箱,拿出一瓶饮料,一边想着如何为家人制作一桌美味的晚餐,对着冰箱说“晚餐”,冰箱屏幕上会为你推荐晚餐套餐,你可以选择你喜欢的晚餐组合,遇到你不会做的菜,可以看着冰箱屏幕的烹饪教学进行做饭。智能家居概念图不少人可能会觉得我说的这些不是电影场景么?过去,这些场景只能发生在科幻电影中。如今,...
2019-01-16 11:00:45
17225
转载 “阻塞”与"非阻塞"与"同步"与“异步"
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2015-07/120338.htm “阻塞”与"非阻塞"与"同步"与“异步"不能简单的从字面理解,提供一个从分布式系统角度的回答。1.同步与异步同步和异步关注的是消息通信机制 (synchronous comm...
2018-12-29 10:50:09
176
原创 C语言复习笔记(3)——volatile
volatile的解释:禁止优化对,对于volatile的解释,我认为只需要四个字——“禁止优化”。在单个线程内,volatile的访问不会被编译器优化掉,将会直接通过其内存地址访问,确保得到的值是“最即时”的值。关于使用的几个注意点1.C 类型系统中每一个独立的类型都有数个该类型的限定版本(不同限定版本的类型可以认为是不同的类型),对应volatile,const及指正的restrict限...
2018-12-20 14:00:27
318
转载 C语言复习笔记(2)——运算符优先级
C 运算符优先级下表列出 C 运算符的优先级和结合性。运算符从顶到底以降序列出。优先级运算符描述结合性1++ --后缀自增与自减从左到右()函数调用[]数组下标.结构体与联合体成员访问-&amp;amp;amp;amp;gt;结构体与联合体成员通过指针访问(type){list}复合字面量(C99)2
2018-12-20 10:51:15
1005
原创 C语言复习笔记(1)——结构体
结构体结构体声明结构体是一种由一序列的成员组成的类型,成员的存储以顺序分配于内存中(与联合体相反,联合体是由一个序列的成员组成的类型,成员存储在内存中重叠)。结构体的类型指定符与联合体( union )类型指定符相同,只是所用的关键词有别。语法struct name(可选) { struct-declaration-list } (1)struct name (2)结构体定义:引...
2018-12-20 10:24:57
305
原创 多线程编程——屏障
屏障是多线程同步的一种方法。barrier意为屏障或者栏杆,把先后到达的多个线程挡在同一栏杆前,直到所有线程到齐,然后撤下栏杆同时放行。先到达的线程将会阻塞,等到所有调用pthread_barrier_wait()函数的线程(数量等于屏障初始化时指定的count)都到达后,这些线程才会由阻塞状态进入就绪状态再次参与系统调度。屏障是基于条件变量和互斥锁实现的。主要操作包括:调用pthread_ba...
2018-12-12 15:52:28
1387
原创 多线程编程——读写锁
一、什么是读写锁读写锁(也叫共享-独占锁)实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写...
2018-12-12 14:42:10
267
原创 多线程编程——条件变量
#include &lt;pthread.h&gt;#include &lt;stdlib.h&gt;#include &lt;unistd.h&gt;#include &lt;stdio.h&gt;/* 静态方式初始化一个互斥锁和一个条件变量 */static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
2018-12-11 16:54:29
250
原创 多线程编程——互斥量
#include &lt;pthread.h&gt;#include &lt;unistd.h&gt;#include &lt;stdio.h&gt;/* 线程控制块 */static pthread_t tid1;static pthread_t tid2;/* 函数返回值检查 */static void check_result(char* str,int result){
2018-12-11 16:51:32
536
原创 多线程编程——线程连接join
#include <pthread.h>#include <unistd.h>#include <stdio.h>/* 线程控制块 */static pthread_t tid1;static pthread_t tid2;/* 函数返回值检查 */static void check_result(char* str,int result){ ...
2018-12-11 16:45:26
286
原创 多线程编程——线程分离状态之detached
#include <pthread.h>#include <unistd.h>#include <stdio.h>/* 线程控制块 */static pthread_t tid1;static pthread_t tid2;/* 函数返回值检查 */static void check_result(char* str,int result){ ...
2018-12-11 16:41:50
752
原创 多线程编程——创建线程
#include &amp;lt;pthread.h&amp;gt;#include &amp;lt;unistd.h&amp;gt;#include &amp;lt;stdio.h&amp;gt;/* 线程控制块 */static pthread_t tid1;static pthread_t tid2;/* 函数返回值检查 */static void check_result(ch
2018-12-11 16:35:06
171
转载 类成员函数作为pthread_create函数参数
近日需要将线程池封装成C++类,类名为Threadpool。在类的成员函数exec_task中调用pthread_create去启动线程执行例程thread_rounter。编译之后报错如下:spfs_threadpool.cpp: In member function ‘int Threadpool::e...
2018-11-21 09:46:51
946
转载 volatile 类型限定符——研读C/C++标准
volatile 类型限定符C 类型系统中每一个独立的类型在都有数个该类型的限定版本,对应 const 、 volatile 及限定对于指向对象指针的 restrict 限定符中的一个、两个或全部三个。此页面描述 volatile 限定符的效果。每一个通过对 volatile 限定类型左值表达式的访问(读与写),对于优化意图都被认为是可观副效应,从而访问会严格按照抽象机的规则求值(即所有写入会...
2018-11-20 12:32:42
652
转载 const 类型限定符——研读C/C++标准
const 类型限定符C 类型系统中每一个独立的类型在都有数个该类型的限定版本,对应 const 、 volatile及对于指向对象指针的 restrict 限定符中的一个、两个或全部三个。此页面描述 const 限定符的效果。编译器可以把声明带 const 限定类型的对象放到只读内存中,而且若程序决不取该 const 对象的地址,则可能完全不存储它。const 语义仅应用到左值表达式;只要...
2018-11-20 12:14:12
325
转载 makefile中常用函数
一函数的调用语法二字符串处理函数subst fromtotextpatsubst patternreplacementtextstrip stringfindstring findinfilter patterntextfilter-out patterntextsort listword ntextwordlist setextwords textfirstwo...
2018-11-19 15:43:48
9969
1
原创 嵌入式C之volatile的解释
volatile的本质:(1) 防止编译器的优化当程序运行在某一个函数内读取变量时,为了提高存取速度,编译器通常会先把变量读取到一个寄存器里,寄存器操作是最快的。然后以后需要再用到这个变量的时候,就直接从寄存器里拿,而不用再通过内存地址去访问内存再取一次了。注意,只有当该变量在本函数内被改变时,寄存器里的存储才会更新,才会和这次内存的改变保持一致。而当变量在其他地方,如中断,其他线程等等,被...
2018-11-14 16:55:09
1697
1
转载 排序算法总结(动态图非常直观)
排序算法分类排序算法比较表格填空 排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 是否稳定 冒泡排序 :————-: :—–: :—–: :—–: 选择排序 :————-: :—–: :—–: :—–: 直接插入排序 :————-: :—–: :—–: :—–: 归并排序 :...
2018-11-12 15:58:02
7078
4
转载 数据结构与算法学习网站
数据结构和算法动态可视化 (Chinese) https://visualgo.net/zh算法与数据结构 https://www.itcodemonkey.com/category/TheAlgorithm/用python实现基本数据结构和算法 https://python-web-guide.readthedocs.io/zh/latest/algorit...
2018-11-12 14:24:34
979
原创 C++知识点总结
C与C++的区别引用别人说的一段话C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用...
2018-11-08 13:51:28
283
原创 线程控制复习
线程和进程的关系①线程是计算机中独立运行的最小单位,运行时占用很少的系统资源(线程使用的数据通常只有寄存器数据以及程序运行时的堆栈)。②线程亦可以看做操作系统分配CPU时间的基本单位。③一个进程可以拥有多个线程。④因为进程地址空间独立,而通常线程共享进程地址空间,所以切换线程要比切换进程快。⑤同样,创建一个新的进程要比创建一个线程消耗的资源大。⑥通信方面,进程由于独立地址空间,通信必须...
2018-11-07 15:19:01
137
转载 C语言struct结构体内存对齐及其原则浅析
sizeof与struct——求结构体大小的计算方法sizeof浅析(一)——求结构体大小 这篇文章讲了sizeof求结构体大小的计算方法,并给出可以套用的准则:一、存储变量时地址要求对齐,编译器在编译程序时会遵循两条原则: (1)结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍) (2)结构体大小必须是所有...
2018-11-06 16:25:23
1224
1
转载 C语言标准及其区别
0、C语言,1973年由Dennis M. Ritchie设计和实现。1、K&R C。1978年由Kernighan和Ritchie合写的书《The C Programming Language》,形成了C语言的事实的标准,简称为K&R C。2、ANSI C(C89或C90)。1989年,美国国家标准局(ANSI)颁布了第一个官方的C语言标准(X3.159-1989),简称为...
2018-11-06 10:43:22
519
转载 Linux /proc目录详解
Linux /proc目录详解 Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。 基于/proc...
2018-11-02 09:59:29
614
转载 LINUX进程内存占用情况如何查看的方法
在系统维护的过程中,随时可能有需要查看 CPU 使用率,并根据相应信息分析系统状况的需要。在 CentOS 中,可以通过 top 命令来查看 CPU 使用状况。运行 top 命令后,CPU 使用状态会以全屏的方式显示,并且会处在对话的模式 -- 用基于 top 的命令,可以控制显示方式等等。退出 top 的命令为 q (在 top 运行中敲 q 键一次)。top命令是Linux下常用的性能...
2018-11-01 14:37:28
27027
转载 教你写Makefile(非常全面,讲解很清晰)
&amp;nbsp;Makefile值得一提的是,在Makefile中的命令,必须要以[Tab]键开始。&amp;nbsp; &amp;nbsp; &amp;nbsp; 什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要...
2018-10-31 11:39:57
3676
转载 什么是位、字节、字、KB、MB
什么是位、字节、字、KB、MB 位:”位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节:8个二进制位构成1个”字节(Byte)”,它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。 字:”字”由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字
2017-08-28 14:21:24
488
原创 为什么ESP8266 TCP透传过程会丢包?8266流控原理以及如何设置
1.为什么ESP8266 TCP透传过程会丢包? 因为没有设置硬件流控。如果需要避免丢包,请设置硬件流控。8266流控原理...怎么给8266设置流控...
2017-08-19 14:02:57
11748
1
原创 ALIENTEK 的 ESP8266 WiFi Module 刷入固件后出现don’t use rtc mem data错误或者ESP8266开启串口不停出现乱码的解决方案
ESP8266 WiFi Module 刷入固件后出现don’t use rtc mem data 出现问题:刷新新的固件后,出现错误提示:don’t use rtc mem data 或各种读写地址错误。 1、A fatal error occurred: Timed out waiting for packet header2、don’t use rtc mem data 处理方法
2017-08-18 23:38:42
9728
2
原创 STM32小白进阶之路----按键的模块化,低延时,高灵敏
两种按键查询方法,两种方式处理第一种方法:扫描查询法 优点:无延迟,高灵敏,无中断 思想:也是别人的代码总结出来的,当按键连续读到10个或者20(这个看你的按键多敏感,我的10就够了)低电平,就算按键按下了//需要循环扫描u8 IsKey0Down(){ static u16 iCount = 0; if(GPIO_ReadInputDataBit(GPIOE,GPI
2017-08-18 23:07:15
3397
【精品推荐-免费下载】清华博士后团队编写的DeepSeek使用指南,压缩包内含DeepSeek赋能职场(清华大学版).pdf 和DeepSeek从入门到精通-清华.pdf
2025-02-14
C++常见问答
2018-11-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人