- 博客(67)
- 资源 (2)
- 收藏
- 关注
原创 bash 脚本的执行方式
在 Bash 中,执行脚本可以通过多种方式,其中最常见的两种是使用bash直接运行脚本和使用source命令(或,即点命令)来执行。这两种方式有着根本的区别,它们对脚本的影响和脚本对环境的影响也不同。
2024-08-28 15:25:05
1750
原创 不要从界面启动IDE来编写代码
ide会继承环境变量,如果从界面启动,ide只会继承系统默认的环境,而从终端会话启动的ide会继承这个终端的环境,二者天差地别,我就是因为这个环境变量的差异死活编译失败,而且命名在终端里可以编译成功!最后从终端启动ide才成果,坑死我了。
2024-08-17 20:27:26
176
原创 能否向右位移?且偏移大小是-1?
即__asm__("shrl %1, %0\n\t" : "+r"(a) : "c"((-s)));这句的右移指令,mmpeg似乎想进行一个负数的偏移,(我不知道他怎么想的,啥情况会负数作偏移?),所以这个内联汇编一定要传入负数s,报错的原因在于gcc拒绝接收负数的立即数作为操作数,把"ic"改为"i",去掉立即数的约束即可成功编译了,参考。cl就是-1值,eax即3,向右偏移-1位,就是偏移0xFF, 变成了0,看来硬件不会作正负判断。那么问题解决了,新的问题是,如果真的把负数传入,那么会发生什么事情?
2023-10-02 18:15:31
757
原创 SDI-12协议与STM32 进行uart通信
其中DIR_OUT_SDI是一个IO引脚,控制UART_TX_SDI是否使能,U10是三态门IC,即拉低DIR_OUT_SDI使能stm32输出,拉高DIR_OUT_SDI失能输出,串口配置8位数据位,偶校验,1位停止位,1200波特率。示波器测试得到传感器的应答信号如下:第一个是唤醒信号,拉高电平13毫秒,之后保持20毫秒低电平,第二个数据帧是激活信号,即ascii码: "0!",第三个是传感器的应答信号:"0\r\n"
2023-09-28 11:39:39
3563
5
原创 Nor flash 页写地址与数据大小的限制
如果页写指令的地址不是256的整数倍,并且写入的数据量超过了当前地址所在页的边界,则超过的那些数据会重新写入当前页的首地址(即256的整数倍地址),所以,在进行页写的时候,要注意这个限制,跨页写数据时注意分多个页写命令。厂商提供的flash手册如下。
2023-09-05 18:40:57
514
原创 STM32 SPI对存储芯片发送写是能命令后一直忙等待
我采用CUBE配置的SPI外设,对cs引脚选择了硬件输出,这种方式对读取命令没有影响,但是对写命令有,当我发送写是能命令后,读取状态寄存器的值一直都是忙,我猜测这可能是硬件控制cs引脚后,对于HAL_SPI_Transmit等命令,内部没有实现CS的拉高和拉低操作,所以才会出现这种情况,证据就是我将CS设置为软件输出,自己控制后,读取就正常了。
2023-09-04 20:53:41
1346
翻译 使用GDB,进行在Pyhon 级别的调试(python使用ctype引用动态库文件)
我在使用python运行一个程序,它引用ctypes调用了动态库,现在需要进行调试,那么可以使用GDB调试python程序。gdb --args python main.py进入gdb就可以设置断点了b func_namerunstackoverflow上有这个问题,出自How to debug python script in C level using GDB. Give me a simple example for this - Stack Overflow...
2022-04-03 11:23:49
402
原创 python 3.6中的字符串转c_type_p的报错问题
官方在这个版本中将 python的字符串类型对应到了字节类型,所以要传字符串时要把字符串转成字节类型,例如:test.argtype = [c_char_p]......test("param")这样会报错,需要修改成test(b"param")
2022-03-21 11:25:20
1134
原创 线性最小二乘法 c语言实现
公式用的出自https://blog.csdn.net/hezhefly/article/details/79517684?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-5.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogComm
2021-10-18 18:45:33
402
转载 算法性能优化的注意点
memset是大家常用的函数,而且一般的编程书籍都会谆谆告诫大家:申请内存后要初始化,防止使用未经初始化的内存导致不可预知的结果,所以我们一般都会按照如下方式编写代码:char* buffer = (char*)malloc(1024);memset(buffer, 0x00, 1024);代码看起来很标准,也很美观,但这里却隐藏着一个陷进:memset的性能并不高!如果你的内存在1K左右,可能还察觉不到,但如果是1M,那性能影响就很明显了,我们来看实测数据(Redhat EL5 Inte.
2021-05-31 15:02:47
339
原创 stm32焊接与调式心得以及求助
对于我这种焊接和软件调试的初学者而言,调通自己焊接的stm板子会遇到一些不易察觉的问题,现在总结一下解决方法。问题一:如果说keil中debug选项里显示无法连接到mcu,你也许有几个检查的思路1 : 如果用sw调式,而且是用stm32Cube生成的初始化文件,那么在stm32Cube配置时要在debug选项中选择SW配置模式,否则仿真器就无法检测到mcu了。2: 你需要在根据pcb图来检查焊接是否出现了虚焊和假焊的错误,焊接不出现虚焊和假焊是焊接的基本功,为了保证焊接的...
2021-05-14 12:01:24
1530
原创 串口通信中中断接收函数一直会接收字符的原因
配置串口通信模式时设置成了同步模式,改成异步模式就好了有些串口调试助手(如win10商店的免费的串口调试助手)不能正确显示接收的字符,需要换调试软件。
2021-01-23 17:23:43
779
原创 win10 串口驱动下载链接
用于windows下的串口驱动安装:https://sciologness.com/download/47462/usb-serial-ch341a.html
2021-01-14 09:28:19
9759
1
原创 个人笔记,关于stm32的hal库的学习笔记
我上传到了gitee思维导图文件用mindmaster打开链接:git@gitee.com:gouweicaosui/stm32-learning-notes.git
2021-01-07 17:33:34
396
转载 stm32开发层次介绍(转载)
自STM32标准库出道以来,备受广大工程师和公司的喜爱,但是,从2013年开始,ST逐渐停止了对标准外设库的更新和维护。目前,ST全力推崇HAL库,STM32Cube就是与HAL库配合使用图形化编程官方IDE。7.1 STM32库简介到目前为止,ST有标准外设库(SPL 库)、HAL 库、LL 库 三种。前两者都是常用的库,后面的 LL 库是 ST 最近才添加,随 HAL 源码包一起提供,目前支持的芯片也偏少。各库如下所示:图1 标准库、HAL 库、LL 库对比其中,SPL 库 和 HA
2021-01-06 11:28:56
1288
转载 嵌入式常识(KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251)
µvision 中µ读 “缪”轻声。我们要区别的概念:KEIL uVision,KEIL MDK,KEIL For ARM,RealView MDK,KEIL C51,KEIL C166,KEIL C251从接触MCS-51单片机开始,我们就知道有一个叫KEIL的软件。在开发单片机时,使用的是C语言或者汇编语言,我们知道,这两种语言都不能直接烧写到单片机里面,执不执行暂且不说,光是代码的体积,就足以撑破整个单片机。所以,我们需要一个软件,把C语言或者汇编语言编译生成单片机可执行的二进制...
2021-01-04 11:26:57
1918
原创 面试笔记(纯粹个人向,用于应对问到项目中解决了那些问题的笔记)
项目:伺服电机初始化和伺服电机调用接口的相关工程任务概括:在通信主机上编写应用程序 利用ethercat驱动进行主机对从机(伺服电机)的数据通信首先需要解释一下ethercat数据通信中的两个重要的概念:pdo和sdo,就我所认识的,sdo用于在通信初始化前对目标从机的某些寄存器进行配置,它是pdo开始收发数据之前执行的,只配置一次。pdo则是过程数据,它在通信建立时不间断地以同步周期为间隔进行数据的交换,具体如何交换则不需要应用层的程序关心,这些都在驱动层完成了。在主机方面:...
2020-11-17 17:25:06
504
原创 关于linux内核结构的笔记整理
我在码云上传了一份自己关于linux内核的用思维导图整理的笔记,刚开始用思维导图,这个工具一方面能直观地把握某一概念的结构,另一方面对于概念的修改和整合,删除,合并等操作十分方便,感觉自己打开了新世界。链接如下:https://gitee.com/gouweicaosui/linux-structure-mind-map...
2020-11-17 15:54:09
137
原创 基于linux环境和ethecat的igh库控制汇川620N的主站代码
#include "ecrt.h"#include <stdio.h>#include "ethercatdef.h"#include "initInovance.h"#include <errno.h>#include <signal.h>#include <stdio.h>#include <string.h>#include <sys/resource.h>#include <sys/time.h>.
2020-09-15 17:12:50
3299
6
原创 ethercat master用户程序初始化
(1)定义配置信息键入命令:ethercat cstruct 得到从机的配置信息,复制下来(我用的从机是简单的io开发板)信息如下:chenpeng@chenpeng-M219F-6C:/lib/modules$ ethercat cstruct/* Master 0, Slave 0, "ServoDrive_FSMC" * Vendor ID: 0x00000009 * Product code: 0x26483052 * Revision number:...
2020-09-02 09:46:17
1188
原创 ethercat环境搭建(igh安装)
需要对应打了实时补丁的内核,可以看我前一篇博客环境准备 :和之前搭建内核的环境一样,gcc修改一下,改成4.8.5,(把/usr/bin 下的链接文件gcc指向gcc-4.8就行)获取安装包 :(1)从EtherCAT官方网站获取网址:http://etherlab.org/download/ethercat/ethercat-1.5.2.tar.bz2(2)从开源代码托管平台github上获取进入github搜索”igh ethercat”即可下载所需要的源码包安装需要的工具
2020-09-01 15:27:57
5713
13
原创 ethercat环境搭建(xenomai核心)
准备工作 :32位ubuntu14.04内核版本 3.14.44 (需要的话后面附上)Xenomai版本 xenomai-2.6.5(需要的话后面附上)(1) 配置并安装Xenomai实时补丁
2020-09-01 14:46:05
1466
原创 用宏定义多个语句时的易错点
比如我定义了#define DEBUG(str) printf( "error:%s\nin file:%s Line:%d\n", (str) , __FILE__ ,__LINE__ ) ;\ fflush(stdout); \ decodeError = 1那么在使用 DEBUG宏时,需要注意是否会产生歧义比如if(...){...
2020-08-11 17:40:23
337
1
原创 如何分隔中缀表达式中的多个表达式?
中缀表达式转换成后缀表达式之前,需要将中缀表达式进行分组,一个表达式就是一组。然后分别对每一组的中缀表达式进行计算。判定两个中缀表达式的分隔点的条件是 判断两个元素之间是否是数字,或者两个紧挨着的元素之间是否是“)” 和数字 或者 “]”和数字比如: A = B +C D=sin(E) F = G[H] J=A上述表达式C 和D是一对数字,就要分隔,)F也满足条件需要分隔 ,】J也是如果有什么不足,请亲们指出...
2020-08-06 16:23:11
194
原创 三点求圆算法
圆的一般方程,三个点确定三条方程,为了求出四个未知数再写一个在圆上的点凑成行列式由克拉默法则得,齐次方程有非零解,那么行列式为零:把行列式按第一行展开后可以得出这个行列式怎么算就不说了。...
2020-06-09 16:23:44
2194
2
原创 gdb在动态库 调式reverse功能
Process record does not support instruction 0xc5 at address 0x7ffff7dee6e7.Process record: failed to record execution log.在被调用的动态库里使用gdb reverse会失败 报这个错误,stackflow上说倒三种办法:LD_BIND_NOW=1LD_HWCAP_MASK=0compiling with -static...
2020-05-29 15:46:06
385
原创 使用gdb调试,如何保存关于库文件里的断点
gdb的 --command=FILE ,-x 不用多说了,是读取配置文件。但是如果要调试库文件,在编译库文件的时候记得加上-g选项。而后如果直接用--command=FILE,-x 的话,如果配置FILE里存在设置库文件的函数的断点,就会提示该函数未。定义(Make breakpoint pending on future shared library load? (y or [n]) [...
2020-03-24 11:41:13
469
原创 cunit库的README例子错误
我下载了cunit库,原作者的源码在https://gitlab.com/cunity/cunit/-/tree/master我下载的git 提交的版本:Author: Chris Doherty <chris.doherty@ncipher.com>Date: Tue Feb 25 15:27:40 2020 +0000头文件中重复定义了四个函数指针,我修改后...
2020-03-16 17:15:26
185
原创 使用gcc编译和链接的笔记记录
编译和链接时都加上-pthread,而不是在链接的时候加上-lpthread链接时如果出现 undefined reference to xxx 可能是xxx符号写成了静态变量或函数
2020-02-28 10:43:27
175
原创 用makefie编译具有子目录结构的动态库文件和动态库的测试文件
需求:我需要写一个根目录makefile和许多子目录makefile,编译动态库文件libnck.so,同时,我还需要编译一个测试动态库文件的可执行测试文件libtest.先用tree查看我的目录结构debug就是用于处理所有动态库文件的.o文件和可执行文件的目录相对于makefile来说比较关键,需要创建debug/bin和debug/obj和debug/test和debug/t...
2020-02-25 23:15:35
282
原创 补充一下搭建公网访问服务器时光猫与路由器的设置连接
光猫设置成桥接桥接模式,也就是pppoe上网方式,路由器的上网方式也要改成pppoe模式,只有这样路由器才能获得网关的ip地址
2020-02-20 15:51:34
1001
原创 git工程拷贝引发的文件权限改变问题
文件权限会导致git认为文件修改,为了忽略这个修改,可以把配置文件里的filemode = true 改成 false
2020-02-17 23:26:55
505
原创 表达式的处理
做表达式的运算时,一般把中缀表达式转换成后缀表达式比如 a = b + c转换成 a b c + =译码时先做词法分析,(就是把表达式中的每个基本部分输入到栈中,我分为运算符和变量两种元素)按照中缀表达式的顺序,a = b + c之后转换成后缀表达式,:遇到数字直接入后缀表达式栈,(同时事先定义好运算符的优先级,定义一个暂时的符号栈 ),遇到运算符就将其与符号栈栈顶的运算符优...
2020-01-18 10:01:47
252
原创 调试第三方库的心得
编译选项 -l 库名(小写的L没有lib前缀,没有so后缀) -L库的路径(不包括文件名) -I(大写的i头文件路径)多数的第三方都库支持64位但是不支持32位环境,我装的pcre2-posix的库也可以在32位环境编译,但是运行是会报段错误。程序链接时调用的动态库不一定就是头文件所对应的。比如我在源文件里只包含了regex.h头文件,没有包含pcre2-posix的头文件(这两个...
2020-01-03 14:10:14
203
原创 posix标准的正则表达式缺陷
posix 标准正则只支持标准和扩展格式的正则,有些高级功能无法实现,比如非贪婪模式,正向断言,没有定界符等等。可以采用第三方的库来取代。我从网上找了pcre2库,它兼容perl标准的正则表达式。源码下载地址:https://ftp.pcre.org/pub/pcre...
2019-12-17 18:26:44
219
原创 如何计算数组的地址
设: 数组定义为A[ , …]现在查找数组A[ , …] (其中 对任意n 都存在>)数组内每个元素的地址大小为 size则其地址为...
2019-12-12 16:04:27
1221
原创 正则表达式之匹配字符串双引号
字符串中可以出现转义的双引号,那么一般的正则表达式就不行了,譬如 "[^\"]*" 无法正确匹配 word1 “word2/"word3 /"” 其结果是 "word2/"这里我用非获取匹配 "(?!/").*" 则结果是 " word2/"word3 /" " .* 表示贪婪策略 .*?非...
2019-12-10 09:54:04
10085
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人