- 博客(26)
- 收藏
- 关注
原创 USR-TCP232-ED2 使用modbus TCP 流程和注意事项
注意点:modbus 协议完整的包电脑端在发送给tcp232模块后,收到的串口数据会省略包头6个字节,并且包尾增加两个字节的modbus crc16校验,同时,包头6个字节包括 :|包头 0x0001 |协议号 0x0000 |长度 0x0006。写寄存器:|包头|单元|命令码0x10|地址|数量|字节长度|字节|读寄存器: |包头|单元|命令码0x04|地址|数量|响应:|包头|单元|命令码0x10|字节长度|字节|1.将模块网口和电脑插在同一个路由器。然后电脑收到的数据包会是完整的响应包。
2024-01-10 15:24:50
809
原创 大小端宏定义
#define sw16(A) ((((u16)(A) & 0xff00) >> 8) | (((u16)(A) & 0x00ff) << 8))#define sw32(A) ((((u32)(A) & 0xff000000) >> 24) | (((u32)(A) & 0x00ff0000) >> 8) | (((u32)(A) & 0x0000ff00) << 8) | (((u32)(A) & 0x000000ff) << 24))#define sw64(A) ((uint64_t)(\
2024-01-09 16:03:40
686
1
原创 STM32 BOOTLOADER 全流程
3.通过bootloader文件大小计算APP地址:修改bootloader的地址和APP的启动地址,比如bootloader文件大小是0x5000,那么其中bootloader文件大小+0x1000的app配置信息就等于0x8006000的APP启动地址,然后修改APP的文件大小,以及spi flash中的保存地址。8.在main函数中添加判断热变量,进入APP的代码,进入当bootloader重启系统复位时,通过判断热变量进入APP,APP才能正常初始化。2.实现底层通讯接口,SPI,串口。
2023-10-20 10:15:47
2290
1
原创 STM32 串口DMA不定长接收全流程
思路:首先cubemax生成工程后,在用户代码中,使用空闲中断+手动调用HAL_UART_RxCpltCallback的方式来实现调用,然后处理完数据后清除空闲中断。实现手动调用完成函数,因为DMA只会在接收完整后才能自动调用,比如期望400个字节,只收到100个是不会调用完成的,一个数据包长度不够就不会调用。开启空闲中断和DMA接收,开启空闲中断后,可以用来实现数据包接收完成就产生中断,而不是DMA全部接收完成才产生中断,也不是每个字节都产生中断。
2023-10-18 17:59:23
250
1
原创 LVGL 修改字库方法
lvgl可以根据这个unicode码得到位图描述id,然后id对应位图描述数组下标,再通过下标得到位图描述,获得bitmap_index,然后通过bitmap_index得到字符偏移量,最后得到字符位图。这里每个描述在数组里的位置,对应了字符映射里的ID [0-N],bitmap_index对应于字符在位图数组里的偏移量。1.在字符映射数组里创建一个描述,指定uncode码起始码,字符数量,以及对应到的位图描述数组里的索引。2.指定一共具有的映射数量,映射数组里有多少个映射描述就是几。
2023-10-17 14:41:32
773
原创 STM32 L431实现W25Q64下载算法
此文件要加入ABSOLUTE ,否则编译会报错 Error: L6265E: Non-PI Section stm32l4xx_hal.o(.data) cannot be assigned to PI Exec region PrgData。步骤3.实现stm32_eval_spi_flash.c Flash 中全部的读写驱动。设置输出文件的地址,一般为STLINK的安装目录。没有这一步STLINK中无法识别到算法文件。步骤4.Keil中添加依赖文件和配置。步骤5:取消掉程序入口。然后移植W25Q驱动。
2023-09-14 17:12:58
457
1
原创 STM32 硬件CAN收发 HAL代码流程
或者使用void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* hcan)2.计算波特率,使得波特率为需要的值,例如500kb,这样才能和设备进行通信。使用HAL_CAN_RxFifo0MsgPendingCallback。4.开始CAN并开启接收数据中断。7.覆写中断处理弱函数。在循环里获取接收队列。
2023-08-16 11:48:13
833
2
原创 STM32 踩坑笔记
1.使用rtthread时,bootloader跳转后就跳转到错误函数中,无法正常运行,debug发现,问题是时钟再次被配置引起,解决方案:将app的时钟配置函数注释,只在bootloader中调用一次时钟配置。
2023-08-14 09:30:50
1158
原创 STM32串口DMA收发不定长
注意:接收长度的大小很重要,当接收的字节达到了size了,才能触发完成函数中断,所以要单字节触发中断,需要将size设置为1。2.msp里配置循环模式或单次模式,如果tx配置为循环,发送将会一直发送,接收配置为循环,可以一直收。3.用户接收回调函数。
2023-07-20 09:23:57
322
原创 echarts 解决缩放引起漂移
在使用setattribute函数时,style会覆盖原有状态,如果不指定高度,将导致还原时高度过大问题。当完成设置后echarts需要更新。
2022-11-26 02:27:51
772
原创 Django 开启gzip压缩
如果对类中函数进行数据压缩,在类外面加@method_decorator(gzip_page, name="getData")如果函数在类外面 在函数上加装饰器@gzip_page。getData 为 类中函数的名称。类中函数不用加装饰器。
2022-11-25 05:31:26
338
原创 Python RSA加密
注意,如果出现无法导入包,需要卸载pycrypt 重新安装pycryptodome。# key是公钥,需要修改成自己的之后再进行加密。
2022-11-21 05:36:08
438
原创 nginx的配置方法
第三步:在location 中添加 proxy_pass http://mysvr;#请求转向mysvr 定义的服务器列表。#请求转向mysvr 定义的服务器列表。#此为本机被映射的地址即项目启动地址。第二步:设置监听的端口:listen 8000 #此为本机开启web服务的端口号。启动 http://myserv 即为先前添加指定的映射地址。
2022-11-18 08:05:08
2297
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人