- 博客(9)
- 收藏
- 关注
原创 转: jlink设备管理器显示的有,但keil无法识别
在通用串行设备里面有J-LINK, 但是在通用串行总线控制器里面看不到, keil也找不到.
2025-05-17 10:15:48
195
原创 一段测试好的NTC RT表插温度的算法, 采用二分法, RT表是倒序的(大到小排列)
【代码】一段测试好的NTC RT表插温度的算法, 采用二分法, RT表是倒序的(大到小排列)
2025-05-13 16:47:13
114
原创 AD7616 IO模拟SPI驱动大法
2. 基本的SPI读写驱动, 注意1.官方的文档可能误导, 2.由于速度极快, 不需要loop延迟.开始转换, 注意, 要隔开两个写操作, 才能读出想要的通道的ad。AD7616因为官方的例程不够, 可能在调试的时候碰到很多坑.1. 首先保证AD7616的管脚正确配置成SPI驱动。3. 初始化AD7616, 最好读出来看看正确与否。
2025-03-16 16:45:36
533
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
246
原创 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
241
原创 非阻塞和线程安全的printf
2.采用发送中断(用循环队列) , 或者DMA发送, 同时系统不采用抢占式和时间片(任务只能自己切换), 同时不要在中断里面调用printf, 也能保证发送单线程执行.原生的printf固然简单, 但是有两个缺点1. 阻塞线程, 2线程不安全, 我想改为非阻塞和线程安全的printf.3.在一个最低优先级的task里面接收发送队列, 然后发送, 其他任务就绪都能优先执行. 达到发送不阻塞的效果.1. 重写printf函数, 在产生格式化字符串的时候要。1. 采用发送中断(用循环队列写入和读出)
2025-02-14 17:11:49
140
原创 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
352
原创 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
883
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人