- 博客(13)
- 收藏
- 关注
原创 stm32cubeide中编译非flash起始地址开始的程序
升级的原理在之前的文章中有介绍,这里因为app大小超过了原来规划的存储空间的大小,因此依据MCU的flash sector的划分,要避免不同用途共用一个sector的空间,因此重新规划了分区,目前app的存储区域有6*64k=384k,满足实际项目需要。将FLASH的起始地址改为0x8020000,长度改为384K,表示固件在flash中的开始位置以及长度,当编译时固件大小超过设定长度384K时,编译会提示出错。将中断向量表偏移值VECT_TAB_OFFSET改为0x0002000U。
2025-06-12 11:16:26
406
原创 STM32实现webserver显示数据及配置参数
其实提到的将fsdata.c重命名为fsdata_custom.c,可以不重命令,将/LWIP/Target/lwipopts.h中HTTPD_USE_CUSTOM_FSDATA 定义为0,这样HTTPD_FSDATA_FILE将使用fsdata.c,避免每次生成fsdata.c需要重命令的麻烦。2、登录成功后,板卡根据板卡配置类型,返回对应的数据页面,该页面可实现数据校准、清零,以及进行到板卡参数设置页面。目前还未实现post功能以及http身份验证功能。3、板卡参数设置页面。
2024-02-22 15:59:16
2492
3
原创 STM32 TCP实现OTA
CRCH,CHRL组成固件全部数据的CRC16校验,下位机收到结束指令后,对整包数据进行CRC16校验,与该指令CRC校准字比对,如果比对成功,则标记为升级成功(向地址0x80DFFF0写入0xaaaaaa)[分包数量],固件数据包按1000字节一个包进行分包,最后一包不足1000字节时,用0x00填充到1000字节,将总的分包数量在开始升级固件指令时写入。其中,bootloader程序为启动程序,app1是当前运行程序,app2为准备升级程序,parameters存储程序相关参数。
2024-02-22 15:30:43
1361
1
原创 FREERTOS+LWIP多客户端连接实现
该方案实现在STM32上建立一个TCP服务端,并可以接受最多5个客户端的同时连接思路:建立一个结构体,该结构体包括5个netconn,每个netconn对应一个标签和一个状态标志位,标签从0~4,标志位初始状态为0,有连接建立后置为1表示该连接已建立 ,连接断开后重新置为0。首先在一个线程(svr_task)里启动服务端监听,并处理客户端的连接请求,有客户端连接时,首先检查是否有state为0的netconn,有的话,就使用该netconn来处理该连接,并新开一个线程(tcp_server_th
2021-11-12 18:21:26
5266
1
原创 FREERTOS+LWIP+多客户端连接调试问题记录
现场使用时往往涉及到一个服务端对应多个客户端连接的问题,起初在连接第三个客户端出现问题,表现为可以连接成功,但是发送数据没有响应,调试后发现问题出在if((err=netconn_recv(clientad.client[clientindex],&clientrecvbuf))==ERR_OK){...}返回状态为ERR_MEM具体出错步骤为/*api_lib.c*/buf = (struct netbuf *)memp_malloc(MEMP_NETBUF);
2021-11-11 17:32:27
1956
原创 STM32CubeMX— 配置串口
使用USART2,波特率1152001、配置引脚2、配置串口参数:波特率、校验位、停止位等3、使能中断4、配置时钟,SYSCLK=168MHz5、生成代码,生成代码后需要在串口初始化函数中以及接收回调函数中添加 开启接收中断 语句:/** * @brief Receives an amount of data in non blocking mode. * @note When UART parity is not enabled (PCE =..
2021-08-21 10:11:15
5278
原创 使用QLocalSocket与Python进行进程间通讯
Qt:lcdmodel::lcdmodel(QObject *parent) : QObject(parent){ socket=new QLocalSocket(this); connect(socket,SIGNAL(readyRead()),this,SLOT(readData())); connect(socket,SIGNAL(error(QLocalSocket::LocalSocketError)),this,SLOT(displayError(Q
2021-04-15 14:21:19
698
原创 商米V2调试记录
debug下正常,release下疑似调用编码时出现错误byte[] message = System.Text.Encoding.GetEncoding("GBK").GetBytes(input);解决方案:
2021-01-27 12:37:22
2071
原创 keil下sprintf格式化浮点数导致死机
单片机:STC12C5A系统环境:Keil现象:调用sprintf格式化浮点数时程序死机,如: sprintf(dispCharArray,"%5.1f",ch_value);解决方法:参考了网上的说法,认为是字节对齐问题导致的,暂时采用自己实现类似sprintf功能方法来解决,代码如下: //不足位数的补空格void Short2Str(char s[], int len, short val){ char *p; char sign = 0;..
2020-10-13 11:21:23
2600
原创 winform(C#)程序实现在线更新软件
有winform程序 LWH.exe,现需要实现远程升级功能,参考网上的相关方案实现步骤如下:1、在远程服务器上建立FTP站点,将更新文件及更新信息放到相关文件夹中其中,updates.json内容如下:{ "latestversion": "3.0.3", "downloadurl": "http://***.***.***.***:****/lwh/update303.zip", "changelog": "更改注册机制", "mandatory": true}l
2020-09-05 17:01:07
7986
5
原创 QT 自定义控件的重绘优化
上一篇文章提到在嵌入式运行时,自定义控件的整体重绘会消耗较多的CPU从而影响系统的实时性,因此考虑将调整控件的结构,把需要重绘的部件放到一块易于指定的区域内,从而达到每次重绘时只更新该区域来节省开销查看update的定义了解到update本身支持只重绘指定的区域void QWidget::update(const QRect &rect)This is an overloaded function.This version updates a rectangle rect inside
2020-08-17 14:27:49
2622
原创 速度仪表的QT实现
参考https://www.cnblogs.com/feiyangqingyun/p/10739099.html内容实现仪表自定义。上面博客作者提供了SDK免费下载,可以直接在电脑上使用,测试过效果很赞。但因为最后要实现在嵌入式上运行,需要编译源码,因为使用的控件不多,因此考虑自己根据上面的显示效果自己来实现。最后实现效果如下:这里主要记录一下速度表 的实现,其他部件的实现大同小异,速度表主要有以下几个部件的绘制 :背景的绘制 刻度及刻度值的绘制 指针的绘制 增加显示...
2020-08-15 15:14:53
2276
原创 基于QT+linux的嵌入式仪表开发(一)-整体结构及实现方案
毕业后一直在单位做技术相关工作,因为在小公司,做的内容多而杂,牵涉的知识点较多但通常不是很深入,主要还是以应用为主,从硬件开发(电路设计、单片机、FPGA)到上层windows应用软件(c#)都有涉及。 去年底因公司项目需要,着手于一款嵌入式仪表的设计开发工作,基于之前对QT有些许了解,也用QT做了一些工作中的小工具,于是便确定了该项目以QT+Linux为基础的这么一个结构。整体方向确定...
2020-04-12 18:28:19
2481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅