- 博客(88)
- 资源 (75)
- 收藏
- 关注
原创 双向链表的理解
代码中经常会出现双向链表,对于双向链表的插入和删除有对应的API函数接口,但直观的图表更容易理解,所以本文会对rt-thread内核代码中提供的双向链表的一些API函数操作进行绘图,方便后续随时查看。
2025-03-31 20:19:48
566
原创 Cortex-M7地址非对齐访问
本文只是做个记录,脑子不好容易忘记。Cortex-M7是支持地址非对齐访问的,但是使用时还是需要多注意细节之处的。。
2024-03-17 15:11:39
700
原创 EC11编码器编码使用
编码器电平发生变化时可能存在噪声,类似按键一样需要增加延时防抖,并且考虑到在系统中少加入延时死等这些不友善的代码,所以代码中有如上处理。stm32中定时器有自带Encoder的功能,所以可以借助定时器的这个特性来实现我们的需求。通过2个pin负责编码器的波形检测,顺时针与逆时针波形不同。直接撸代码,GPIO必须使用复用功能有定时器的pin。此两种方式已做测试,稳得一批,如果细节问题可沟通。— 2021.10.22-21:45于广东深圳。直接就上代码了,随意两个GPIO。IO外部上拉与无上拉。
2023-10-22 21:45:50
2313
原创 手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)- 2
此文主要是记录一下usb枚举时抓取的一些数据以及usb msc涉及的部分scsi协议。
2023-09-10 21:53:51
1200
1
原创 手把手教你使用USB的CDC+MSC复合设备(基于stm32f407)
最近对usb有点兴趣,感觉挺好玩的,于是买了本圈圈大神的经典著作-,里面使用51单片机+usb芯片对usb的基本知识潺潺道来,做了十个左右的常用案例实验,很有趣,建议大家看看。趁热打铁,拿身边的开发板来练练手,探索一下复合设备的好玩方便的地方。
2023-08-13 10:13:40
9666
43
原创 ld文件中指定变量在flash中的地址定义
本文说的是在gcc环境中,Keil或IAR可能有自己的使用方法。我们在定义变量时,有时候需要把变量定义放到flash中的固定位置或区域,此时需要修改工程中的链接文件(link file,ld文件)。
2023-05-21 23:23:15
2399
原创 esp8266(MQTT固件)通过at指令连接阿里云平台
实验:esp8266 连接阿里云。准备工作:usb连接到电脑上之后,可以识别到串口,说明有固件。由于新买的模组,芯片内的固件可能并不是我们想要的,此时可自行官网下载固件及烧录。固件地址:https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB本人使用的固件:固件下载之后,需使用官方提供的烧录工具,地址:https://docs.ai-thinker.com/%E5%BC%80%E5%8F%91%E5%B7%A5%E5%85%
2023-03-11 15:39:18
6488
2
原创 ssh免密登录远程服务器
远程服务器个人账户下.ssh目录创建文件authorized_keys(如果没有的话需创建,目录一般是/home/xxx/.ssh),将id_rsa.pub里的内容拷贝至authorized_keys文件中。user是远程服务器的账户名,server是服务器ip,此命令会在文件(authorized_keys)的基础上进行叠加,不会覆盖。个人账户下ssh的公钥内容需要保存至远程服务器,公钥生成方式如上。C:/Users/用户名/.ssh。以后就可以直接免输入密码来登录。此命令,一路向西即可生成。
2023-02-26 22:43:46
195
原创 关于嵌入式函数入口参数的了解
1、cpu执行代码时,一般用到内部的通用寄存器是R0、R1、R2、R3;2、当函数的入口参数不超过4个时,则会使用上述4个通用寄存器来保存当前参数;否则,会将多余的参数压入栈中进行保存;注意:此处4个参数,指每个参数占用的字节数不超过4个,若参数占用的空间大于4个字节,如结构体或者double类型数据,则会使用多个通用寄存器来保存;3、最后,也就是一条建议,由于CPU内部运行是快于栈操作的,所以减少多余的入口参数,可以有效地加快程序运行的速度。
2022-10-23 14:05:01
729
原创 嵌入式函数调用入栈与出栈
简单的例程,几个函数调用,来查看寄存器状态,主要是学习一下cortem-M核中LR寄存器的理解:例程源码:通过单步调试来查看各个寄存器状态:进入调试界面记录当前进入main函数所要做的动作和记录的状态1、因main()函数中还有子函数,所以需将r4-lr寄存器压入栈中,对应的汇编:2、记住当前main函数中return 0处的代码地址:0x08000180在进入fun1()函数后,会将返回地址的指针加1保存到LR寄存器中,即0x08000181,请记住这个值。进入fun1()1、查看当前
2022-10-22 16:59:24
1356
原创 vscode+jlink+GDBServer在线调试
上述步骤即可实现vscode+jlink+GDBServer的在线调试功能,当然也存在一些问题,目前还未找到原因,如每次进入调试都需重新启动GDB Server,然后再使用vscode进入调试模式,否则可能会进入调试失败。图中所示:J-Link已连接,GDB Server Listening port: 2331,TCP端口是2331处于监听状态,等待GDB的TCP连接。至此,GDB Server已打开,tcp端口2331处于监听状态,下一步是要通过GDB进行连接GDB Server。
2022-10-16 15:14:41
9352
4
原创 ssh免密登录
远程服务器个人账户下.ssh目录创建文件authorized_keys(如果没有的话需创建,目录一般是/home/xxx/.ssh),将id_rsa.pub里的内容拷贝至authorized_keys文件中。注:user是远程服务器自己的账户,server是服务器ip,此命令会在文件(authorized_keys)的基础上进行叠加,不会覆盖。个人账户下ssh的公钥内容需要保存至远程服务器,一般是C:\Users\xxx.ssh\id_rsa.pub。
2022-09-20 22:55:36
380
原创 单片机中uid的使用方法
在链接文件xxx.ld文件中定义我们要存放的uid校验码在flash中的区域rom(rx)0x4000;0x4000;.text{定义32位校验码。
2022-07-17 11:42:16
1740
原创 巴特沃斯滤波器使用-butter
matlab的函数butter()低通滤波使用方法。 N 代表滤波器阶数 Wn为:低通就是截止频率,带通就是[w1,w2]低通 Wn的计算方法:例:设计1阶低通2Hz滤波器,采样频率为250Hz。则则则输出为:根据z变换公式:数字滤波器传递函数为:......
2022-07-07 23:51:48
2578
原创 模拟I2C
I2C具体内容参考资料https://blog.youkuaiyun.com/sternlycore/article/details/85600668https://blog.youkuaiyun.com/qq_43460068/article/details/122409361以下是在Atmel 300MHz下调试处的400KHz模拟I2C,延时函数需要根据实际内核进行设置#define I2C_SDA_OUTPUT_DIR(pin) ioport_set_pin_dir(pin, IOPORT_DIR_OUTP
2022-04-29 00:06:50
566
原创 内存管理学习
简单的内存分配算法学习系统中一块剩余不用的大块连续内存。当需要分配内存块时,将从这个大的内存块上分割出相匹配的内存块,每个内存块都包含一个管理用的数据头,通过这个头把使用块与空闲块用双向链表的方式链接起来,如图:mem_head是free链表的头,整个内存块从mem_x开始,每个内存块包含一个头,内容:1、magic 魔术字,用于标记这个内存块是一个内存管理用的内存数据块;魔术字不仅仅用于标识这个数据块是一个内存管理用的内存数据块,实质也是一个内存保护字:如果这个区域被改写,那么也就意味着这块内存
2022-03-30 22:36:02
715
原创 cmake例程学习
代码结构代码外层CMakeLists.txtcmake_minimum_required(VERSION 3.5)project(test)option(FANGFA1 "fangfa 1" ON)if (FANGFA1 STREQUAL "ON") # 方法1 add_library(MyMath INTERFACE) add_subdirectory(math) message("方法1")else() # 方法2 add_subdi
2021-11-17 23:27:18
479
原创 ubuntu 20在虚拟机桥接模式下设置固定ip
设置配置文件,不同系统文件名可能不同:/etc/netplan/01-network-manager-all.yaml修改文件内容,自己修改对应ip地址和网关:# Let NetworkManager manage all devices on this system#network:network: ethernets: enp0s3: dhcp4: false addresses: [192.168.0.105/24] gateway4: 192
2021-11-10 23:27:29
2524
原创 vscode 配置代码格式化工具calng-format,windows/linux都支持
1、安装clang-format工具linux (ubuntu)sudo apt-get install clang-formatwindows下载clang-format.exe,并将此文件路径加入环境变量下载地址或从官网:https://download.youkuaiyun.com/download/niu_88/149463102、vscode安装插件从插件扩展中安装clang-format,不然,vscode无法识别calng-format3、格式化文件创建 .clang-forma
2021-10-23 12:01:09
2026
原创 Ubuntu搭建TFTP服务器
1、需要安装 tftp-hpa 和 tftpd-hpasudo apt-get install tftp-hpa tftpd-hpasudo apt-get install xinetd2、创建TFTP服务器文件目录mkdir /home/nhf/work/tftp可以把文件放入该目录进行文件传输3、配置 tftp新建文件/etc/xinetd.d/tftp,并添加内容server tftp{ socket_type = dgram protocol = udp wait =
2021-10-22 23:16:32
537
原创 Nuttx实时操作系统 SAMV71-Xplained开发板适配
官网参考:https://nuttx.apache.org/docs/latest/quickstart/compiling.html1、board配置nhf@nhf-VirtualBox:~/work/learn/nuttx/NUTTX/nuttx$ ./tools/configure.sh -L | grep samv71 samv71-xult:nsh samv71-xult:netnsh samv71-xult:vnc samv71-xult:module samv71-x
2021-10-14 01:07:10
516
原创 linux下JLink使用脚本一个命令烧录程序
#!/bin/bash#--------------------------------------------------# program binfile, usage: ./program firmware.bin# chip:Atmel# start addr:0x00400000#--------------------------------------------------cmdfile="./tmp.jlink"start_addr=400000end_addr=401
2021-10-02 21:43:22
914
原创 argparse学习
argparse,输入参数,命令行交互import argparseif __name__ == '__main__': parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--baud", "-b", dest="BAUDATE", type=int, default=115200, help="help - dest是实际使用的参数名,可选参数") parser.add_arg
2021-07-31 12:00:54
335
原创 shell获取进程ID
shell脚本中查看某进程ID比如,查看进程niugge的PIDpid=$(ps -ef | grep niugge | grep -v grep | awk 'NR==1 {print $2}')grep niugge, 过滤出niugge所在行grep -v grep, 过滤掉grep所在行NR==1,代表第一行print $2, 返回第二列的值,即PID所在列最后,返回的值保存到pid中,可以使用此值进程操作。...
2021-06-01 14:56:21
3901
原创 docker容器不支持中文
docker容器不支持中文输入进入容器时在命令中添加:env LANG=C.UTF-8如下:docker exec -it container_name env LANG=C.UTF-8 /bin/bash
2021-05-18 22:03:32
1113
原创 docker报错
1、Hardware assisted virtualization and data execution protection must be enabled in the BIOShttps://blog.youkuaiyun.com/mythest/article/details/92999646
2021-05-17 22:53:51
123
原创 wsl由2切到1之后,virtualbox无法启动ubuntu的问题
终端输入以下指令:bcdedit /set hypervisorlaunchtype off重启。启动virtualBox,启动linux,然后报出以下错误:此时,设置virtualBox的以下操作:此时,就可以启动linux了。
2021-05-13 22:59:11
419
原创 linux tab命令无法补全
安装sudo apt-get install bash-completion文件刷新source /usr/share/bash-completion/bash_completion
2021-05-12 22:56:39
416
原创 windows 创建链接目录
将本应该安装到C盘的东西安装到D盘中,避免C盘臃肿庞大。mklink /j "C:\Program Files\xxx" "D:\Program Files\xxx"在此之前要先创建"D:\Program Files\xxx"目录,这样,安装到C盘的东西会自动安装到D盘中,而C盘只是链接文件。...
2021-05-12 22:51:20
480
原创 代码格式化
代码格式化进行统一管理方法1、VS code 使用.clang-format方法2、代码commit之前进行格式化需要工具clang-formatubuntu下安装 sudo apt-get install clang-formatwindows下下载clang-format.exe,并添加至环境变量.clang-format(如下内容)放到项目根目录:---Language: Cpp# BasedOnStyle: LLVMAccessModifierOffset: -
2021-01-27 23:42:54
1464
原创 make编译MCU(nxp1064)基于CMakeLists.txt
针对MCU,编写CMakeLists.txt,使用make编译。根目录创建CMakeLists.txt,编写内容:cmake_minimum_required(VERSION 3.10)project(led)enable_language(ASM)set(CMAKE_C_COMPILER arm-none-eabi-gcc)set(CMAKE_OBJCOPY arm-none-eabi-objcopy)set(CMAKE_SIZE arm-none-eabi-size)add_de
2020-12-31 23:59:31
974
原创 双系统ubuntu18自动挂载windows磁盘(找不到windows磁盘的UUID)
针对戴尔的XPS,当使用ubuntu挂载windows的磁盘时,通过命令sudo blkid查询如下:nhf@nhf-XPS-15-9500:~$ sudo blkid[sudo] nhf 的密码: /dev/loop0: TYPE="squashfs"/dev/loop1: TYPE="squashfs"/dev/loop2: TYPE="squashfs"/dev/loop3: TYPE="squashfs"/dev/loop4: TYPE="squashfs"/dev/loop5:
2020-12-30 19:57:18
943
1
高度控制,滑模变结构控制方法及simulink仿真
2020-02-26
滑模变结构控制的几种切换函数及simulink仿真
2020-02-25
stm32h743 ECC.pdf
2019-10-26
SD 2.0 协议标准完整版---中文版
2019-10-16
GPS经纬度转换为平面坐标的c代码,包含具体推导公式
2019-07-29
uboot_freescale_2020_ver在正点原子开发板imu6ull的uboot移植代码
2021-10-28
NUTTX.zip,适用于SAMV71-Xplained开发板
2021-10-25
kconfig-frontends-4.11.0.1.tar.bz2
2020-10-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人