![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习
文章平均质量分 60
爱兔蛙
宁可慢,不要站
展开
-
list_for_each 详解
该宏写的很巧妙,将0地址强转为TYPE类型,在对其中的MEMBER进行取址,将该地址转为size_t类型就获得了MEMBER类型在TYPE类型中的偏移位置。上面的代码中遍历链表时下次访问的内存为pos->next,故在每次遍历时对pos->next进行预热,从而提升性能。container_of的作用表示先求出结构体成员(即member)在结构体(即type)中的偏移量,然后再根据member的地址(即ptr)来求出其所在结构体的地址。list_entry就表示ptr所在的结构体的地址,就是指针;原创 2023-03-23 20:53:59 · 984 阅读 · 0 评论 -
回声消除(Echo Cancellation)理解
理解下回声消除(Echo Cancellation)基本原理(只是基本原理,非专业):回声的产生就是speeker的传来的声音又被mic接收,传给对方的话产生回声,回声消除的原理就是mic接收的声音将speeker传过来的声音减掉就是没有回声的原始声音;注意减的时候,有个时间延时(这个貌似需要算法计算)...原创 2021-03-26 16:54:43 · 2369 阅读 · 0 评论 -
基于Nucleo-F401RE点个灯(KEIL)
今天捡了个Nucleo-F401RE(其实是同事离职后,收拾他桌子时发现他遗留下来的);看着这块板子做的挺精致,拿来玩玩!搜索了点资料如下CN2的短接线主要是将SWD连接到了F401芯片上,若想用这块板子的st_link调试其他设备,可将跳线去除,将CN4用线连接到其他设备。• STM32F401RET6微控制器,基于ARM Cortex-M4处理器,带DSP,最高支持84MHz主频• 支持Arduino UNO R3 Shield扩展板,微控制器所有IO口引脚通过排针座引出• ST-LINK/原创 2021-03-24 18:38:14 · 1349 阅读 · 1 评论 -
C语言中volatile关键字
volatile是一个类型修饰符(type specifier),就像我们熟悉的const一样,它是被设计用来修饰被不同线程访问和修改的变量;volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。作用简单地说就是防止编译器对代码进行优化。比如如下程序:XBYTE[2]=0x55;XBYTE[2]=0x56;XBYTE[2]=0x57;XBYTE[2]=0x转载 2021-02-26 14:43:23 · 184 阅读 · 0 评论 -
#和##用法总结
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) do{ if (EXP) fprintf(stderr, "Warning: " #EXP “/n”); }原创 2021-02-20 15:24:40 · 44795 阅读 · 0 评论 -
warning: CRLF will be replaced by LF in 出现的原因和解决办法
转载主要原因是,不同系统下,文件的换行符是用不同字符表示的。Linux采用换行符LF表示下一行;Windows采用回车+换行CRLF表示下一行;Mac OS采用回车CR表示下一行。解决方法是,切换git对待换行符的方式。git config core.autocrlf查询当前应对策略。为true时,Git会将你add的所有文件视为文本问价你,将结尾的CRLF转换为LF,而checkout时会再将文件的LF格式转为CRLF格式。为false时,line endings不做任何改变,文本文件保转载 2021-01-26 15:05:47 · 1942 阅读 · 0 评论 -
unable to negotiate with *.*.*.*: no matching key exchange methodfound. Their offer: diffie-hellman-
在Windows上更新了git 版本后,clone/pull时出现错误,unable to negotiate with ...: no matching key exchange methodfound. Their offer: diffie-hellman-group1-sha1解决方法:在执行git pull/clone之前,输入:export GIT_SSH_COMMAND=‘ss...原创 2020-03-27 19:14:11 · 854 阅读 · 0 评论 -
卡尔曼滤波收藏
https://blog.csdn.net/CSDN_X_W/article/details/90289021原创 2019-08-12 17:19:19 · 117 阅读 · 0 评论 -
python serial使用
import serialimport binasciiimport timeimport re ser = serial.Serial()filename = "test.txt"def port_open(): ser.port = "COM127" #设置串口端口号 ser.baudrate = 115200 #设置波特率 s...原创 2019-08-14 08:46:32 · 1764 阅读 · 0 评论