- 博客(13)
- 收藏
- 关注
原创 通过keil RTE, 移植freertos到GD32F103C8. 用最新的freertos V11 + compiler V6
注意最新版的keil, 器件库的安装目录不再在C盘的根目录, 而是在user/appdata里面, 安装错了, keil里面新建工程找不到厂家和器件.而我想用最新的freertos V11 + compiler V6, 所以只能自己新建和移植.1. 首先安装 相应MCU的keil驱动, 器件库, 一般各大MCU的官网都有, 耐心找找.然后要新建一个main.c和gd32f10x_it.c, 加入到工程, 点编译看能否通过.因为很多例程都是基于V10版的freertos和arm compiler V5.
2025-11-14 09:42:58
190
原创 串行通讯, 怎样可靠获多byte的帧头?
一定要在帧头不对的时候, 重新找帧头!, 以免连续的头部出错时, 比如: 0xfe 0xfe, 失去同步。比如: 三个固定的帧头: 0xfe, 0x0f, 0xbc。串行通讯, 怎样可靠获多byte的帧头?
2025-09-12 16:24:21
213
原创 MCU移动平均的集中算法
3. 不需要数组来存放历史数据, 用一个总和sum来存储. 很次用时先减去sum/64, 然后加入新的数据到sum, 返回新的sum/64。2. 优化的: 使用当前需要替换的元素index来更换新的数据, 避免耗时的逐次移动。
2025-08-19 16:41:36
204
原创 转: jlink设备管理器显示的有,但keil无法识别
在通用串行设备里面有J-LINK, 但是在通用串行总线控制器里面看不到, keil也找不到.
2025-05-17 10:15:48
312
1
原创 一段测试好的NTC RT表插温度的算法, 采用二分法, RT表是倒序的(大到小排列)
【代码】一段测试好的NTC RT表插温度的算法, 采用二分法, RT表是倒序的(大到小排列)
2025-05-13 16:47:13
136
原创 AD7616 IO模拟SPI驱动大法
2. 基本的SPI读写驱动, 注意1.官方的文档可能误导, 2.由于速度极快, 不需要loop延迟.开始转换, 注意, 要隔开两个写操作, 才能读出想要的通道的ad。AD7616因为官方的例程不够, 可能在调试的时候碰到很多坑.1. 首先保证AD7616的管脚正确配置成SPI驱动。3. 初始化AD7616, 最好读出来看看正确与否。
2025-03-16 16:45:36
789
2
原创 STM32 U盘drive开发笔记
ww1. 首先在cube里面选用USB OTG, fats 文件系统2. 在main函数里面初始化和USB消息轮询: MX_USB_HOST_Process(); 是获取到U盘的状态当收到的消息是: 1. HOST_USER_CLASS_ACTIVE, 表明U盘驱动和文件系统已经可以读出文件了, 执行: read_write_U_disk_file_data();2. HOST_USER_DISCONNECTION和HOST_USER_CONNECTION 表示u盘的拔插* read_wri
2025-03-10 11:14:01
289
原创 CANopen帮你入门
PDO的目的是想高效快速传输参数, 因此不想在数据区8byte里面有多余的东西, 那就约定好在里面放入哪些对象字典里面的项目, 因为PDO有ID里面4组(tx/rx)地址, 可以传输: 4*2*8=64byte的数据。有运行参数:比如充电的电流,电压,so,c温度等, OTA要传给MCU的bin文件的大小crc等。PDO: 快速的数据, 不要应答, 比如电流,电压,so,c温度等。SDO: 最要的数据, 要求有应答, 主机设置充电器的关键参数等。对象字典的索引分为16位的主索引和8位的子索引。
2025-03-07 11:18:19
326
原创 非阻塞和线程安全的printf
2.采用发送中断(用循环队列) , 或者DMA发送, 同时系统不采用抢占式和时间片(任务只能自己切换), 同时不要在中断里面调用printf, 也能保证发送单线程执行.原生的printf固然简单, 但是有两个缺点1. 阻塞线程, 2线程不安全, 我想改为非阻塞和线程安全的printf.3.在一个最低优先级的task里面接收发送队列, 然后发送, 其他任务就绪都能优先执行. 达到发送不阻塞的效果.1. 重写printf函数, 在产生格式化字符串的时候要。1. 采用发送中断(用循环队列写入和读出)
2025-02-14 17:11:49
201
原创 mcu int类型的长度和对齐
int等数据长度的不一样, 要不要对齐, 其实是c语言的一个大坑, c语言只是用short, int, long等数据类型, 但是不同的处理器, 对应的bit数量大相径庭, 给移植和编程带来很大的麻烦.32位机: 指针, int, long, float都是32bit的, long long, double是64bit。8位机: 16位机: 指针, int, float都是16bit的, long是32bit的。首先所有的处理器: char是8bit, short是16bit,
2025-01-03 14:41:38
379
原创 STM32F103 OTA bootloader 怎样进入不同的APP分区?
需求: ota升级通常要把代码(bin文件)通过串口/can/usb/蓝牙/4G传输到mcu, 这个传输要么通过booltoader处理, 要么通过app处理, 我觉得最好是app处理, 这样减少bottloader的代码量, 避免重复.app收到bin, 虽然可以存在外部flash上面, 但是最好存到另外一个app区, 这样速度快, 成本低, 最最要是可以两个app区相互备份, 升级不成功就换到上次成功的app分区.mcu片内分区4个: (128K ROM, 1k/page)0x80
2025-01-03 10:15:22
1020
1
通过keil 移植的实际工程
2025-11-17
通过keil RTE, 移植freertos到GD32F103C8. 用最新的freertos V11 + compiler V6
2025-11-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅