- 博客(36)
- 收藏
- 关注
原创 (5)瑞芯微开发工具 v2.92 的使用教程和分区烧录
讲解和演示每一个功能首先按住maskrom按键再上电,也是直接发现设备了因为现在是在maskrom状态中,现在切换到高级功能选项卡里面,点那些按钮都没用的。简单来说,MaskROM 就是固化在 SoC 芯片内部硬件里的一段不可篡改的初始启动代码。芯片上电瞬间,CPU 内核(比如 RK3506 的 Cortex-A7)从 0 地址开始执行的第一行代码,就是 MaskROM。它的任务非常纯粹:把接力棒交给下一阶段的引导程序(DDR / Bootloader)。因为现在是空的,所以啥功能都没有。勾选第一个,地址0
2026-08-04 17:50:38
280
原创 buildroot自定义
分析/target/etc/init.d/S99appinit文件,这个文件是系统启动时会运行的文件,查看他的内容:/bin/shcase $1 instart);;stop);;*);;esac就是执行了/oem/RkLunch.sh这个文件,顾名思义就是Rk启动lunch时的文件,所以更改这个文件就能实现自己需要的启动时逻辑了。
2026-08-04 17:50:12
190
原创 (3)buildroot编译记录
这个sh实际去执行sdk根目录下的/device/rockchip/common/post-build.sh(/device/这个目录是瑞芯微存放编译uboot、kernel、buildroot、debian\ubuntu这些需要用到的脚本或者参数总的目录),然后这个sh最后执行了。RK_UBOOT开头的就是编译uboot用到的参数,RK_BOOT开头的是编译kernel时有用的参数,RK_ROOTFS开头的就是编译根文件系统有用的参数,。然后把这些配置写入到。后面再输出了全局的配置参数,
2026-08-04 15:56:04
198
原创 (2)kernel编译记录
这章记录kernel的编译,首先最后我们编译出来的结果是在sdk的kernel文件夹下面生成一个zboot.img,这个zboot.img就是最后可以直接烧录的文件。对比了正点原子的atk_dlrk3506_linux6.1_release_v1.3.1_20260326和合众恒跃HZ-RK3506_MiniEVM_LINUX_SDK_v1.3.0这两个sdk编译kernel的过程,发现还是正点原子的sdk的编译过程输出的log更详细方便理解整个编译过程,实际上大差不差毕竟都是瑞芯微提供的。
2026-08-04 15:54:18
232
原创 (1)uboot编译记录
进入u-boot目录,先清除之前编译出的内容,保证目录纯净然后编译根据传入的参数alientek_rk3506,会去找u-boot/configs路径下的alientek_rk3506_defconfig这个文件。对比了正点原子的alientek_rk3506_defconfig这个文件,和同路径下瑞芯微自身提供的rk3506_defconfig进行文本差异对比,发现本质上就两处差异。
2026-08-04 15:50:45
186
原创 单片机mcu(stm32)计算生成二维码
二维码的标准版本共有40个,从版本1到版本40,每个版本对应不同的尺寸和数据容量。版本越高,二维码的矩阵越大,能存储的信息也越多,但图案也更复杂,需要更高的扫描精度。
2025-12-25 17:22:38
1440
原创 c语言自己实现一个printf函数
定义了一个 512 字节的字符数组作为临时缓冲区,用来存放格式化后的字符串,数据长度不能超过512,或者修改数组长度以支持更长的数据发送。这是一个可变参数函数,用法和printf函数一样,所以可以直接替换printf函数,在keil里面都可以不用勾选微库。
2025-11-05 09:38:03
225
原创 WT588E02B-8S语音芯片播放和下载
2. 把宏定义UC16由原来的unsigned int改为uint16_t,UC32也改成uint32_t了。这在32位单片机上很重要,否则在stm32上更新语音的时候会出错。1. 对GPIO的操作改为hal库的方式,对GPIO的拉高拉低也改为宏的方式。
2025-07-16 09:21:50
292
原创 stm32使用hal库模拟spi模式3
初始化cs,clk,miso,mosi四个io。miso配置为输入,cs、clk、mosi配置为推挽输出。模式3的时序图,在clk的下降沿切换电平状态,在上升沿采样, SCK空闲为高电平。因为网上模拟spi模拟的都是模式0,很少有模式3的。
2025-06-04 11:29:33
702
原创 (二)stm32使用4g模块(移远ec800k)连接mqtt
因为订阅了test/topic这个主题,所以向这个主题发送信息,自己也马上接收到了信息,也就完成回环测试。2.发送AT+QMTCFG指令配置参数,配置内容是+QMTRECV:收到消息,把消息体的长度也附带输出。3.发送AT+QMTCLOSE=1,关闭通道1,确保是一个新的连接。7.AT+QMTPUBEX,订阅上了,就向这个主题发送一条信息。6.AT+QMTSUB,连接上了,就订阅主题topic。5.AT+QMTCONN=1,通道1的mqtt连接。4.AT+QMTOPEN=1,打开通道1。
2025-06-01 16:42:12
2452
原创 (一)腾讯云(debian)上搭建MQTT服务端(mosquitto)
可以看到这里支持的mqtt协议是5.0和3.1.1和3.1这些,有的系统版本低的如debian10安装的mosquitto 可能只支持3.1.1和3.1,后面用mqtt客户端软件连接时可别搞错了。允许1883端口的连接,不然是连接不上的,阿里云的服务器应该也要在防火墙里打开端口才能连上,如果服务器是国外主机商的倒是不用配置什么防火墙。添加好后,按ctrl+o再按回车保存文件内容,再按ctrl+x退出文件编辑。修改完配置文件,需要重启一下mosquitto。没有配置用户名和密码用来测试够了。
2025-05-26 10:07:32
745
原创 1mb的flash,4kb一页,每一页起始地址和结束地址对照表
标准输出:Page 1: Start = 0x00000000, End = 0x00000FFF。1mb的flash,4kb一页,每一页起始地址和结束地址对照表,方便查询。
2024-11-18 11:22:33
494
原创 c语言实现WGS-84、GCJ-02、BD-09互转
1,WGS-84: 原始GPS坐标系, Google Earth坐标系, 微软Bing地图坐标系, 国际通用标准.2,GCJ-02: 火星坐标系, 高德坐标系, 腾讯soso坐标系(国内), 谷歌坐标系(国内), 国测局坐标.3,BD-09: 百度地图坐标系.
2024-05-11 15:23:52
1088
原创 usb做虚拟串口时与uart的一些不同
所以我猜测,是用的局部变量数组做为发送缓冲区,虽然调用了usb的发送函数,但很快啊还没等usb发送完,上一层函数执行完毕,出栈,局部变量数组的缓冲区被回收,usb此时还在发,但此时的缓冲区数据已经不可靠了,可能被另作他用了,所以出现只发了一半正常的内容后面的内容变乱码了。后面改用全局变量作为发送缓冲区,情况得以改善。
2024-04-25 10:40:17
432
原创 jflash给复旦微fm33单片机烧录程序
jflash默认支持的单片机列表里是找不到复旦微fm33单片机的,需要手动修改文件添加支持的单片机。3. JLinkDevices.xml文件替换到SEGGERJlink_V632H路径下,覆盖原文件。2. FMSH文件夹添加到SEGGER\JLink_V632H\Devices路径下。1. Segger版本为Jlink_V632H为例。
2024-03-16 14:34:45
2633
1
原创 极海apm32和stm32实际使用发现的区别
没有调用MX_IWDG_Init()函数初始化看门狗,在主循环内调用HAL_IWDG_Refresh(&hiwdg)喂狗,apm32不会出现问题代码能继续跑,但stm32会运行出错进入HardFault_Handler中断函数。apm32和stm32是pin2pin的,但是实际使用的时候发现独立看门狗的区别。
2024-01-24 09:34:15
1980
原创 关于单片机低功耗的一些处理
1.使用到串口的io引脚,进入休眠之前一定要复位,否则一个引脚会带来1.5mA的消耗,其他外设的引脚最好都复位。因为设备使用电池供电,所以对功耗要求很低,在休眠状态下,需要到达uA级别。2.4g模块,nb模块,该关电的关电,该进入休眠的进入休眠。
2023-12-28 11:09:25
970
原创 关于stm32的usb需要重新插拔电脑才能识别的问题
使用stm32的usb,每次烧录代码后都要重新插拔才能识别,usb两个引脚上电拉低了再延迟一段时间,还是识别不了,后面发现原来延迟时间太长了,延迟10ms就行,延迟100ms就不行了,这样每次上电,usb两个引脚拉低10ms的样子就能识别到了,不用重新插拔usb线了,唉😔,又吃了没文化的亏。
2023-12-28 10:50:45
2679
2
原创 关于 SC7A20 的相关驱动代码
SL_Sc7a20_Angle_Driver.c其中需要注意的地方:要改的地方就是SCL,SDA引脚的初始化,都配置为开漏输出,我这边用的复旦微芯片。SCL,SDA引脚做输出时配置为开漏输出。SDA引脚存在输入输出切换,在set_scI2cSDAIO函数中切换输出或者输入#include "SL_Sc7a20_Angle_Driver.h"#include <math.h>#include "main.h"// 7位地址 8位地址//PC9 i2c地址
2023-11-23 16:50:13
5125
6
原创 记录记录记录
typedef int8_t s8;typedef uint8_t u8;typedef int16_t s16;typedef uint16_t u16;typedef int32_t s32;typedef uint32_t u32;typedef int64_t s64;typedef uint64_t u64;
2023-11-11 09:50:23
138
原创 复旦微FM33LG048芯片使用(6)PH15引脚作为普通io使用
FL_VAO_GPIO_WritePH15Output(VAO, 1) //输出高。FL_VAO_GPIO_WritePH15Output(VAO, 0) //输出低。PH15引脚使用跟普通的引脚初始化是不一样的,被vao什么使用掉了,所以需要这样初始化。
2023-10-08 16:01:39
661
原创 【4g模块】移远ec200n-cn的AT指令使用
不知道从哪里拿了一块ec200n-cn的开发板。记录一下,使用这个4g模块的tcp透传的使用。
2023-09-25 10:33:33
4188
1
原创 CH448F的使用
例如:给SEL2低电平,给SEL1高电平,给SEL0低电平,再给XEN#低电平,此时内部A2X与AX相连。SEL0,SEL1,SEL2使用8421码决定A0X到A7X哪个与AX相连。的连接使能,低电平使能。
2023-09-04 17:10:44
997
原创 复旦微FM33LG048芯片使用(5)UART3数字外设的使用,引脚重映射
也就是remap为disable时,PB0, PB1作为SPI1_MISO和SPI1_MOSI引脚使用。remap为enable时,作为UART3_RX和UART3_TX引脚使用。其他引脚同理,disable作为数字功能1使用,enable作为数字功能2使用。也就是配置了数字外设,引脚的输出输入由使用的外设决定,不需要我们配置是输入还是输出了。配置为数字外设,什么是数字外设,根据文档里描述。uart3的引脚配置比较特殊,先要配置。在文档中GPIO章节有一张表,所以init应该是这样的。
2023-08-23 10:27:56
1036
原创 复旦微FM33LG048芯片使用(4)UART串口的使用
最后在main文件的while循环里调用UART_RxProcessing()函数,串口收到一个字节的就发送回去。在mf_config.c文件写入一下函数,官方例程随便找一个工程就有这个文件。这里使用的是uart0在开发板的右上角位置即PA13,PA14引脚。因为jlink连了vcc和gnd,所以这个VCC和GND可以不连。记得在main文件调用MF_Config_Init()函数啊。这里用的usb转ttl模块。
2023-08-22 14:22:16
1692
原创 复旦微FM33LG048芯片使用(3)定时器ATIM使用
在main文件调用MF_Config_Init()函数配置定时器,我这边配置的是10ms进一次中断,后续跟串口一起使用,接收串口不定长的数据。最后,别忘了在main文件调用ATIM_Start()函数启动定时器。最后,别忘了在main文件调用ATIM_Start()函数启动定时器。创建atim.c文件,用于编写定时器中断处理函数。
2023-08-22 11:31:19
1225
原创 复旦微FM33LG048芯片使用(2)外部晶振时钟配置
pll代码是从官方给的例程copy出来的,在main文件调用SelXTHFToPLL()函数就行,图里的其他函数都是例程里的。将pll.c和pll.h文件添加进工程。
2023-08-22 11:06:59
1378
3
原创 复旦微FM33LG048芯片使用(1)程序下载和点灯
mian文件调用这个函数,再使用FL_GPIO_ResetOutputPin(GPIOC, FL_GPIO_PIN_1);拉低引脚,就完成点灯。实物连接:(烧录程序只需要连jlink的线,其他的线是串口、led可以先不管)用的jlink的swd调试,首先接线。根据原理图写一个引脚初始化函数。点Settings进去看看。
2023-08-22 10:47:51
2033
2
MKS-SERVO42A-master,包含代码和硬件原理图
2023-04-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅