![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
jacklood
这个作者很懒,什么都没留下…
展开
-
STM32实现多级菜单界面显示
1、main函数中,while循环之前。3、MultiMenu.c中。4、MultiMenu.h中。2、while循环中。原创 2024-06-15 13:47:18 · 580 阅读 · 0 评论 -
STM32开发遇到问题解决2024.6.14
第一次使用开关电源,可以正常打到200kpa,第二次使用电池,上电后电磁阀直接动作,经过排查mos管是否损坏,测量控制极的上电电压,只有mos2的上电电压正常,说明其他三个mos管都损坏了,原因可能是在使用开关电源供电时,在结束时没有先拔掉mos控制板上的电源供电导致的。检查气压传感器采集气压不行的原因,审核原理图、接线并在开发板上测试都没有问题,不知原因,最后讨论后,试试3.3V供电,可以,原因找到:之前设计时以为5V和3.3V供电都可以,实际传感器手册上面写的是3.3V电压供电。1、电路板打样出问题。原创 2024-06-14 14:01:16 · 270 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.13
修改程序,将中断按钮的case中key置0,下载测试,按键按下后几乎没有反应;测试使用12V4.3寸工业屏,修改屏幕制作文件的字体大小为合适,中文字库重新生成测试,仍然有字体不能显示是红色方块,和屏技术支持沟通后,原因是因为串口屏的存储位置有分区,23号中文字库编号和41号变量图标的存储区有冲突导致。由于更换串口屏,把USB口的电路板供电拔了,主板断了电,但是,电池的电源线没断,导致12V电源一直给mos板供电了十多分钟,后面气泵电机突然蹦跶几下,发现有胶糊味道,把电池的电源线拔掉,线已发软了;原创 2024-06-13 13:59:48 · 119 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.12
解决深度不显示的bug,修改程序代码后,先是查看从flash中读出来的datatemp数据,发现没有深度数据,不知为何,查看代码,看到之前每次写入flash中的数据长度都是20,以为这种余量够了,加上了深度的2字节长度数据应该可以,测试把写入和读出长度都修改为了size的结构体长度,调试看到深度数据在第20和21位,而不是18和19位,因为时间时期的数据在结构体中的存储长度有字节对齐的原因,所以这样,所有读写的代码修改为size后,和读出的深度的数组位置后,测试,深度数据显示正常。1、历史数据存储混乱。原创 2024-06-12 14:04:50 · 188 阅读 · 0 评论 -
STM32开发遇到问题解决2024.6.7
汉字显示功能一开始不知道,用的是0号字库,查询“正常”的GBK的ASCII码后,修改程序,下载,显示的字为乱码,问询迪文屏技术支持后,得知0号字库不包含汉字,需要生成汉字字库,即ts3字库生成工具,又根据迪文哔哩哔哩官网的文本显示实现,迪文屏制作软件上带有字库生成工具DGUS字库,使用用制作字库,字库开头须为23,多次测试字体大小,最终确定字体大小为30*30的宋体可以,最终,汉字显示正常,测试,没有问题。拔掉12V电源,后测量mos板,没有问题,但实际已烧坏,不能工作。改为使用3A的保护板电池后没问题。原创 2024-06-07 13:57:22 · 238 阅读 · 0 评论 -
STM32开发遇见问题解决2024.6.6
查看迪文串口屏的使用手册,了解文本显示的方法,发送的指令中数据为ASCII码,找到一个十六进制数据转化为ASCII码的代码做参考,复制到程序工程中,并完善编写时间显示的串口指令程序,重新制作串口屏显示文件,下载程序后,文本显示日期时间正常,注意发送的指令的数组的数据长度如果短的话,显示会不完整。与迪文屏技术支持联系后,用描述指针来隐藏数据,查看使用手册后,修改制作文件和程序代码,测试,发现数据隐藏后还需要隐藏后显示数据指令,已添加左右翻页的部分,当数据量不大于6的情况下也需修改完善。1、实时时钟掉电保存。原创 2024-06-06 14:01:23 · 335 阅读 · 0 评论 -
STM32项目开发遇见问题解决2024.6.4V2
下载程序后,程序倒计时不显示,进入调试界面,查看倒计时变量是变化的,说明定时器已工作,再核对倒计时程序里面的地址和屏幕制作软件里面的地址不同一个1100一个1110,修改程序里面的地址为1100后,下载,运行正常。修改程序代码,加入按键按下后开始启动倒计时,并且在定时器回调函数中设计倒计时为0后,停止定时器工作,存储参数1和参数2和测量值保存在flash中,下载,测试,按下按键不工作,查看按键的接线没有接,接上后,按下,倒计时启动,当为0后,查看历史记录,数据有保存。2、串口屏变量地址不对应。原创 2024-06-04 14:13:56 · 452 阅读 · 0 评论 -
STM32项目开发遇见问题解决2024.6.4
并找来一个按键板,接好线到单片机,查看之前的按键程序,移植过来并修改。程序初步编写完成后运行,按下增加、减小、切换按键没有反应,单步调试查看不了按键的值,查看变量值没有改变,后来又把增加减小按键代码放在while循环中也不行,经过排查,调试程序观察按键扫描函数的返回值,让程序一直全速运行,按下增加、减小按键后返回值一直是0,说明按键扫描函数有问题,进入按键扫描函数,发现keyscan()函数中新增加的4个按键的对应的代码没有添加,修改后,下载程序,可以正常运行,可以增加、减小。2、按键需要按多次才起作用。原创 2024-06-04 13:59:01 · 161 阅读 · 0 评论 -
STM32单片机遇见问题总结1
2、修改后采集的ADC值仍不准确,初始ADC引脚应该为0.5V,测量出来却有0.89V,误差较大,排查原因,发现用的ADC引脚为PA7,该引脚在开发板上接的有上拉电阻,换用其他没有接任何器件的ADC引脚PC0和PB0,测试还是不行,在不接传感器输出线的情况,ADC口的电压应为0,采集后却有1.15V的电压,原因在排查中。7、使用USB转TTL模块在串口调试助手发送读屏指令,测试成功,屏有回复数据,单独再测试写数据指令,数据写入成功,写入的数据需要是2字节的,但是在界面制作数据变量时,数据是4字节的。原创 2024-06-01 13:55:03 · 138 阅读 · 0 评论 -
串口屏变量图标显示电量
2、然后可以使用美图秀秀逐个修改图片的像素为一致,比如像素为55*32,修改后如下。3、然后打开DGUS_V7.647软件,点击ICL生成工具。6、在变量图标右侧属性修改框修改属性,添加36变量图标文件。4、导入图片,点击生成ICL,如文件命名为36变量图标。7、这样变量图标配置完毕,生成屏幕文件。8、将以下屏幕文件下载到串口屏即可。5、然后在配置界面设置变量图标。原创 2024-05-31 13:49:51 · 185 阅读 · 0 评论 -
PIC单片机控制小型三相无刷直流电机
1、使用PIC12F629小型三相无刷直流电机制作电动口罩,涉及到电机的驱动芯片的选型,这里选用国产的MS39549驱动芯片;4、由于PIC12F629单片机只有八个引脚,资源很少,所以需要使用一个定时器实现PWM信号的生成。3、单片机给MS39549驱动芯片发送PWM占空比信号,即可实现对电机的转速控制;原创 2024-05-29 14:12:40 · 244 阅读 · 0 评论 -
STM32待机休眠指令设置
1、如果使用STM32单片机需要在不工作的时候进入待机休眠模式,通过查询STM32的数据手册,可以通过几个指令语句设置先关的寄存器即可。当按键按下的时候,取消待机休眠模式,进入正常工作的状态。原创 2024-05-20 13:42:59 · 224 阅读 · 0 评论 -
迪文串口屏的中文字体显示
注意:如果汉字库的存储大小为2.4M字节,编号为26,如果实际的字库储存大小超过了串口屏分配的储存大小(22到32之间的大小),则就会不能完全将汉字库下载进入串口屏,汉字就不能完全显示。(3)需要注意的是,文件的数字编号一定要仔细,否则汉字不能完全显示,会出现某些字显示位红色的方框,这和串口屏的flash存储分配有关,因为查看DGUSII 应用开发指南。4、需要注意的是,在串口屏上显示汉字,还需要使用串口屏文件制作工具,生成汉字库,下载到串口屏中。(1)打开串口屏文件制作工具,选择DGUS字库。原创 2024-05-18 14:10:51 · 540 阅读 · 0 评论 -
立创EDA批量放置过孔及删除
2、然后选中铺铜的边框,再点击工具,选择铺铜批量过孔。1、首先将绘制好的电路板顶底铺铜,如下图。3、设置批量过孔的参数后点击确定。原创 2024-05-17 13:44:09 · 732 阅读 · 0 评论 -
STM32程序下载电路设计
使用STM32F103RCT6作为单片机主控芯片,在进行电路板设计过程中,需要预留程序下载接口,可以选择使用JLINK下载器下载程序。1、查看STM32F103RCT6的芯片手册,找到下载程序的引脚端口PA13和PA14,如下。3、绘制完PCB电路板就可以使用JLINK仿真下载器和keil5下载程序了。需要注意的是:JLINK仿真器和单片机电路板之间要有一个转换小板如图。4、连上JLINK下载器后。原创 2024-05-16 13:56:10 · 310 阅读 · 0 评论 -
立创EDA绘制PCB电路板
2、将元器件拖入电路板方框内,摆放布局并使用工具栏布线、放置过孔及丝印。1、绘制好原理图后,点击设计---原理图转PCB,生成PCB文件。4、后面就可以生成制板文件发送嘉立创制板了。3、然后顶层和底层铺铜。原创 2024-05-15 16:02:37 · 350 阅读 · 0 评论 -
立创EDA绘制电路原理图
(1)放置元器件,以AT89C52为例,在元件库中查找单片机,找到后确认封装,并点击放置。(3)放置完元器件后,使用右上角的工具连线及放置网络标号,绘制完原理图如下。(2)常用元器件可在常用库中查找,如电阻、电容、电源、电感等。1、下载立创EDA并安装注册,这里我用的是标准版。2、在账号名右键,新建工程。3、以单片机时钟电路为例。原创 2024-05-15 14:55:45 · 275 阅读 · 0 评论 -
从嘉立创EDA提取PCB封装到Altiumdesigner的步骤
8、然后在AD点击设计---生成PCB库,即可生成AD使用的拨码开关PCB库。2、然后点击数据手册,显示出来4位拨码开关的封装图。5、点击文件,导出Altiumdesigner。9、原理图封装过程与PCB封装生成过程相同。3、点击立即打开,进入立创EDA编辑界面。6、勾选同意,并导出,放至一个文件夹。7、然后用AD打开这个文件。原创 2024-05-14 14:06:48 · 770 阅读 · 0 评论 -
STM32控制蜂鸣器
电路中使用的三极管为NPN三极管,控制方法为BEEP引脚输入高电平,则三极管自上而下导通,蜂鸣器鸣响,BEEP引脚输入低电平,则三极管不导通,蜂鸣器不响。在一些设备仪表中,都需要蜂鸣器来发出提示音或者按键操作的声音,这里就用到蜂鸣器。1、蜂鸣器的分类为有源蜂鸣器和无源蜂鸣器,其区别是有没有振动源,这里我们常用有源蜂鸣器。原创 2024-03-07 09:34:28 · 871 阅读 · 0 评论 -
将结构体中的浮点数数据提取出来并发送至串口屏显示
3、这样,就可以使用pdata2指针按字节地址访问结构体中的成员数据,这里通过提取,将float LiuLiang_Value数据存放在了liuliang_buff[i]中。5、需要注意的是,直接将float LiuLiang_Value值给串口屏是无法实现的。现需要将其中的float LiuLiang_Value;4、然后,可以发送串口屏指令,将浮点数据显示在串口屏上。可以看到,单精度浮点数占据4个字节长度。再讲结构体指针做一个转化。2、先定义结构体变量。原创 2024-02-03 14:26:31 · 494 阅读 · 0 评论 -
迪文串口屏数据的隐藏功能
由于项目中在使用迪文屏显示数据的时候,需要在数据为0的时候不显示0,而迪文屏默认的数据变量在无值的时候显示为0,此时可以使用数据的隐藏功能指令。3、设置完描述指针地址和变量地址后,就可以发送指令5A A5 05 82 80 00 FF 00,将该变量数据隐藏。FF 00即表示将数据隐藏。原创 2024-02-03 13:47:17 · 609 阅读 · 0 评论 -
迪文串口屏文本显示的使用
从图中看出如果想显示日期、时间,则需要的串口发送数据的时候先转化为ASCII码才能在屏幕上显示出来,如图,数字1的ASCII码为31,数字2的ASCII码为32。变量地址为串口要控制文本框显示的地址,范围为1000到FFFF,编码方式这里选择GBK,文本长度为要显示的文本的字节数,这里期日、时间的字节长度设置为24,X\Y方向的点阵数为这里显示的字符的字体大小。注意,日期、时间中的“-”、空格和“:”需要查询ASCII码值,分别为0x2d、0x20和0x3A。原创 2024-01-27 11:45:56 · 1662 阅读 · 0 评论 -
基于cubeMX的正点原子miniSTM32对W25Q64的存储使用
可以实现将TEXT_Buffer数组的数据写入flash中,地址为倒数第100个地址,该地址也可以更改为从0地址开始写,然后从该地址读出数据,显示在屏幕上,从而实现了数据存储在flash中,掉电后flash中的数据不会清空。5、添加正点原子hal库的w25q64驱动程序,如下图,注意先添加.C程序后也要添加w25q64.h的头文件路径,具体添加过程不再叙述。使用cubeMX建立项目工程,结合正点原子提供的hal库对W25Q64闪存调用的例程,实现W25Q64的读写。3、设置完成,生成代码。原创 2024-01-24 17:06:33 · 751 阅读 · 0 评论 -
关于变量在多个.C文件中使用(Undefined symbol tempbuff (referred from main.o).问题解决)
于是,就将使用的代码移动了过来,为SetTxData1_toLCD(0x00,0x01);和UserUart1Send( tempbuff1,sizeof(tempbuff1));另外,如果是函数在别的文件中使用,可以不用加extern,如void UserUart1Send(uint8_t *send_data,uint8_t send_len);1、如图结构,想在multimenu.C和usart1.c中使用变量tempbuff。提示未定义,原因是只在usart1.h中做了extern的声明,如图。原创 2024-01-17 17:01:42 · 454 阅读 · 0 评论 -
迪文串口屏屏幕界面制作软件T5L_DGUS Tool\\DGUS_V7647的使用
使用迪文串口屏要首先用屏幕界面制作软件T5L_DGUS Tool制作界面,然后在直面上设置变量,变量对应有地址。单片机可以使用串口发送数组,数组为迪文屏的控制指令,比如写数据指令,该指令中有变量的地址,然后就可以将要显示的数据显示在屏幕界面上的相应位置。选择新建工程,分辨率设置为480*272,并在桌面新建文件夹wer,选择该存储路径,确认。7、因为电压值为数字显示,最后再生成一个0号字库,这里回到欢迎界面,选择0号字库生成工具。4、给AD电压值处添加数据变量图标,选择文本显示,选择数据变量。原创 2024-01-17 16:54:52 · 978 阅读 · 0 评论 -
传感器浮点数数据在串口通信中封包技术解析
首先,需要取temperature的地址将其强制转化为unsigned char *类型的指针pdata1,由于temperature的8个字节的数据依次存放在存储空间中,所以将pdata1指针连续加1,并将指向的字节数据存储在charArray1[8]中,则完成了double型温度数据到字节数据的转化,pressure数据的转化同样如此。这里,在发送数据的时候,添加了简单的枕头、帧尾。接下来,则调用串口的发送函数,将已经转化为字节数据的温度数据和气压数据发送出去。三、机器人A发送大气压数据前的转化过程。原创 2023-09-14 20:11:49 · 144 阅读 · 0 评论 -
STM32程序模块化开发指导
3、当GYBMP280模块和OLED显示屏模块的c程序代码和头文件建立完成后,需要将两个模块添加到项目工程面,首先,在项目工程的如下目录创建HARDWARE目录,并将GYBMP280模块和OLED显示屏模块的c程序代码和头文件放到该目录下面。1、模块化开发的思路是在基础项目模板工程的基础基础上,添加新的功能模块则是以模块独立文件包的形式添加到项目工程里,通过相关的设置后,即可编译项目工程代码,添加n个功能模块则添加n个模块文件包到工程里即可,具体操作如下。同时,也将I2CS.C添加到system目录下面。原创 2023-07-10 15:17:38 · 619 阅读 · 0 评论