自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(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 407

原创 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 5267 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 1957

原创 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关注的人

提示
确定要删除当前文章?
取消 删除