自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 GD32入门到实战60--WIFI(AT指令驱动)

我们主要用到的是基础AT命令集,WiFi AT命令集,MQTT AT命令集。我们用的WIFI模块是ESP8684-MINI,因为8266已经停产了。30,31脚并不是和单片机通信的引脚,这两个引脚是调试时用到的。AT命令默认波特率是115200。与单片机通信的是20,21脚。打开WIFI模块的数据手册。WiFi AT命令集。MQTT AT命令集。

2025-10-05 14:50:12 209

原创 GD32入门到实战55--LVGL开发之 实现日历时间

我们定义一个静态全局变量,来存放RTC的数据。按下保存按键,产生事件,事件回调,保存时间。把之前写死的值改成RTC的值。我们在设置时间时就把时间保存。我们在工程里新建这两个文件。初始化时获取系统时间。

2025-09-10 22:08:53 254

原创 GD32入门到实战54--LVGL开发之 设置日期只显示到2023年

我们要改三处打开这个.c文件第一处第二处第三处当当当当!!!

2025-09-10 21:38:02 130

原创 GD32入门到实战53--LVGL开发之 设置日期事件UI界面

【代码】GD32入门到实战53--LVGL开发之 编辑框。

2025-09-10 20:46:41 148

原创 GD32入门到实战52--LVGL开发之 下拉列表 + 编辑框

【代码】GD32入门到实战52--LVGL开发之 下拉列表。

2025-09-10 20:34:29 442

原创 GD32入门到实战51--LVGL开发之 温湿度采集UI界面

我们设置的父对象是一个容器,这个容器的大小等于整个屏幕大小,后面我们要实现菜单界面,方便实现,我们在把我们在LVGL模拟器写的代码拷贝到我们新建的hmi_temphumi.c。我们还在里面创建了三个容器,第三个容器里有6个控件。我们把生成的字体和图片文件拷到keil工程里。我们生成三个不同大小的字体文件。要把添加进来的文件改一下头文件。

2025-09-10 18:51:25 208

原创 GD32入门到实战50--LVGL开发之 lable控件使用方法

我们发现还是显示不出来汉字,因为LVGL这个编译器识别的函数编码格式是UTF-8的。我们要用16号字体,要把 16对应的0改成1。假如我们要使用中文需要把cjk的0改成1。我们下载好字体去LVGL官网生成字库。在lv_conf.h可以设置字体。第二个,改成utf-8。

2025-09-10 16:05:05 179

原创 GD32入门到实战49--LVGL开发之 FLEX弹性布局

【代码】GD32入门到实战49--LVGL开发之 FLEX弹性布局。

2025-09-10 15:08:47 108

原创 GD32入门到实战48--LVGL开发之 BUTTON控件和事件(控制LED)

我们先创建三个按键,初始化样式,用lv_obj_add_event_cb();我们要实现LVGL按键控制LED。

2025-09-10 14:44:48 203

原创 GD32入门到实战47--LVGL开发之 设置控件样式

设置颜色两种样式:1:本地样式2:普通样式。

2025-09-10 10:58:52 274

原创 GD32入门到实战46--LVGL开发之 基于对齐设置控件位置

两种对齐,1参照父对象对齐;2参照其他对象对齐;如果这样设置,控件之间会有一定的距离。

2025-09-09 22:57:25 244

原创 GD32入门到实战45--LVGL开发(Code::Blocks)之创建控件

打开可以设置屏幕分辨率lv_conf.h设置要和keil设置的一样设置好后可以点击这个红色按键(编译+仿真)这时会弹出窗口。

2025-09-08 23:02:48 316

原创 GD32入门到实战44--LVGL使用外部SRAM

宏定义:/*选项1:使用自定义(内存)的malloc/free函数。选项0:使用内置的`lv_mem_alloc()`和`lv_mem_free()`函数。我们可以算一下一整个像素屏幕要用到的内存320*480*2 = 307200 = 307.2kb。48U * 1024U = 48k,这个内存大小跟显示的复杂度有关。3.使用两个数组来存缓冲的图像数据,每个数组大小整个液晶屏(轮流)2.使用两个数组来存缓冲的图像数据,每个数组大小为10行(轮流)1.使用一个数组来存缓冲的图像数据,大小为10行。

2025-09-08 21:41:46 300

原创 GD32入门到实战43--解决上电死机问题

输入savebin x:/ram.bin 0x20000000 0x10000,导出RAM内存文件。输入usb -->halt -->j -->回车 -->回车。往后看7个字节,08010190,在dis文件查找这个地址。查找SP寄存器的地址(2000ED48)可以查到地址在exmc初始化函数出问题了。PC寄存器:08000C3A。程序进入了hardfaut。打开工程的dis文件。

2025-09-08 20:46:50 318 3

原创 GD32入门到实战42--移植GUI库LVGL

接下来我们要添加头文件路径,我这里准备了头文件的路径代码,在这里最后加";我们在工程文件新建App_Hmi,我们把hmi_app.c/h移动到App_Hmi。在touchpad_is_pressde函数调用触摸屏驱动检测触摸函数。把LVGL源码的src等文件夹复制到Mid_lvgl。在disp_flush函数中调用LCD驱动显示函数。因为我们修改了这个的文件名,所以这里改成这样。在工程文件夹里新建Mid_lvgl文件夹。我们在这个网站可以下载LVGL的源码。在touchpad_get_xy函数。

2025-09-08 20:10:32 233

原创 GD32入门到实战41--触摸屏

一定一定要注意读取触摸芯片的周期不要大于10ms!INT:触摸时会产生中断,初始化时配置设备地址。下面我们用软件模拟I2C的方式驱动触摸芯片。我们用的触摸芯片是GT911(I2C)我们配置的设备地址为0x28/0x29。在人机交互文件hmi_app.c里实现。可以检测按下的坐标,按下的面积。我们板子用的时电容式触摸屏。我们要实现画布的功能。

2025-09-08 15:19:40 521

原创 GD32入门到实战40--LCD

我们用的是RGB565写时序:WR上升沿写数据读时序:上升沿读数据读驱动芯片ID我们发送0xD3后,要读取数据线的低八位,要读4次,前两次无效,后两次的值组合一起,如图就是9488控制显示方向(扫描方向+bgr位)设置x坐标范围:发送设置指令-->起始坐标的高八位-->起始坐标的低八位-->截止坐标的高八位-->截止坐标的低八位设置y坐标范围:发送设置指令-->起始坐标的高八位-->起始坐标的低八位-->截止坐标的高八位-->截止坐标的低八位写图像数据:发送指令2C,这时就用到了16条数据线,一次可以传输1

2025-09-08 14:21:18 468

原创 GD32入门到实战39--SRAM

单片机的RAM容量太小了(64k)外接SRAM--1M字节(IS62WV51216BLL-55)512k,16bit,最小读读时间周期55ns单片机Flash的内存是按8bit(一个字节),每个字节都有对应的地址读时序写时序地址为0x8000000~0xA000000(1GB)1GB分成4个Bank ,每个Bank256M第一个Bank是用来驱动NOR/SRAM的每个Bank又会划分4小块,1块64M,每一块都可以单独的驱动一块NOR/SRAM芯片。

2025-09-07 20:34:06 370

原创 GD32入门到实战38--SD卡

这些存储单元实际内部也是Norflashcommand:命令字命令:响应数据总线模式:SD卡能用1位,4位宽度,MMC(淘汰)能用8位宽度SD卡操作模式:卡识别模式:数据传输模式:读数据块流程:块大小位512字节多数据块读取:写单块数据块;写多块数据单片机的SDIOcd脚可以识别sd卡是否在,低电平表示插入sd卡了,高电平反之,可以通过该脚实现热插拔功能SD卡的驱动代码量过于庞大,所以开发时找官方历程。

2025-09-07 14:11:55 329

原创 GD32入门到就业37--文件系统于FatFs

我们要实现每隔10s获取温湿度数据,把每次打印的数据保存到Norflash里,按下Key1串口打印存储的所有数据我们可以在这个网站下载最新的FatFs文件系统库我们也可以看到对应用层对外开放的接口函数。

2025-09-06 17:24:38 390

原创 GD32入门到实战36--程序死机解决办法

R0~R12为通用目的寄存器,可以保存数值,而R0~R3可以作为输入参数传给被调函数,在函数结束后R0和R1可以保存函数返回值,R13,14,15是来保存地址的 R13为栈指针,R14用来保存函数返回地址的,R15程序计数器,保存要执行代码指令的地址,R寄存器用来做加减乘除运行算的我们可以根据汇编看到,每一条代码指令的地址为两个字节。

2025-09-06 10:06:33 446

原创 GD32入门到实战35--485实现OTA

我们内存这样分配,简单来说就是 把单片机 flash 分成两份,bootloader 引导程序 12k, appflash 主程序 500k,上电默认进入引导程序,可以用 485 通过 ymodem 烧写 bin 文件,修改 appflash,实现更新固件(程序)设置app程序区域大小为500kb起始地址为0x8003000,前面的12kb为引导启动。bootloader启动 boot的复位函数 ----> app的复位函数。注意我们烧写的bin文件前 ,烧写程序的工程要修改一下。选择连接485的端口。

2025-09-05 21:08:17 329

原创 GD32入门到实战34--ARM启动流程

很多同学在看启动文件时会有一个问题:启动文件的—main和我们自己写的main函数有什么关系吗?__main是在keil自带的库函数,在这里面又调用我们自己写的main函数。单片机都是从0地址开始执行的,而0x0000 0000Aliased to Main Flash or Boot loader作为跳转到其他地址使用。我们之前用isp串口下载程序,串口下载通过bootloader启动烧写到Main Flash。__main会把全局变量放到内存的data段。我们可以通过J-Flash打开bin文件。

2025-09-05 15:48:07 239

原创 GD32入门到实战33--用单片机内部FLASH保护产品参数

【代码】GD32入门到实战33--用单片机内部FLASH保护产品参数。

2025-09-05 11:11:43 318

原创 GD32入门到实战32--产品配置参数存储方案 (NORFLASH)

我们要实现:原本设定的modebus从机(单片机)地址是01,存储在norflash里,按下按键后修改地址为02,重新上电modebus从机(单片机)地址仍然是02。我们之前已经实现norflash的驱动了,我们在应用层实现产品配置参数存储方案。我们在app这个文件夹里创建store_app.c。

2025-09-04 20:22:04 210

原创 GD32入门到实战31--SPI

因为我们要写的#define BUFFER_SIZE 4099太大,所以我们把GD32的栈容量改大。128Mbit,每页256byte(字节),1块64kb,1块有16个扇区,每个扇区4kb。我们开始驱动NORFLASH。

2025-09-04 17:00:29 242

原创 GD32入门到实战30--产品配置参数存储方案 (EEPROM)

我们要实现:原本设定的modebus从机(单片机)地址是01,存储在eeprom里,按下按键后修改地址为03,重新上电仍然是03。我们之前已经实现eeprom的驱动了,我们在应用层实现产品配置参数存储方案。这是有人问了up,up这个要怎么才可以实现修改从机地址呀?那我们当然是要写个修改从机地址的函数,我们在mb.c添加。我们在app这个文件夹里创建store_app.c。

2025-09-04 00:23:13 318

原创 GD32入门到实战29 -- I2C

iic为半双工,可以一主多从写数据读数据。

2025-09-03 15:39:59 241

原创 GD32入门到实战28--RS485(Modebus)

常见485硬件电路。

2025-09-03 01:00:15 552 5

原创 GD32入门到实战27--传感器任务框架搭建

我们编写sensor_drv.c。

2025-09-02 16:19:33 146

原创 GD32入门到实战26--ADC(单/多通道+DMA+常见十种算法)

要才会产生eoc标志,会把转换值,但是,所以我们要用到规则组类似于主流程,注入组类似中断,注入组打断规则组优先执行信号源的输出阻抗对ADC的采样有影响表格为。

2025-09-02 13:58:04 1371

原创 GD32入门到实战25--独立看门狗

所以我们32分频:40k/32 = 1.25k (0.8ms周期)装载值为2000ms/0.8ms=2500。我们要设置看门狗最大超时时间2000ms。驱动层写完了,我们在应用层创建业务文件。程序运行时要及时喂狗!编写wdg_drv.c。

2025-09-01 19:54:45 236

原创 GD32入门到实战24--RTC实时时钟

主电源掉电由纽扣电池给RTC和BKP(掉电易失)供电。我们添加这几个.c文件到gd32_hal。我们新建rtc_drv.c。

2025-09-01 19:21:12 284

原创 GD32入门到实战23--测量捕获的pwm脉宽

我们要明确一个概念,定时器1有四个输入通道ci0~ci3,输入捕获通道有四个ch0~ch3。

2025-08-31 19:03:56 191

原创 FreeRTOS实战:任务创建与调度详解

我们发现pxNewQueue = ( Queue_t * ) pvPortMalloc( sizeof(

2025-08-31 15:41:59 1052 1

原创 GD32入门到实战22--红外NEC通信协议

假使接收到1就>>1再|0x80,如果接收到0就>>1。红外传输协议地位在前,所以我们可以这样保存数据到数组。新建红外驱动层代码ir_drv.c。

2025-08-30 22:21:32 291

原创 GD32入门到实战21--输入捕获

我们新建capture_drv.c。

2025-08-30 16:03:51 272

原创 GD32入门到实战21--PWM输出

【代码】GD32入门到实战21--PWM输出。

2025-08-30 14:51:17 205

原创 GD32入门到实战20--定时器

我们看芯片的数据手册可以知道定时器0~13都可以配置为120Mhz的主频。我们新建timing文件编写定时器的代码timing_drv.c。GD32F303ZET6为例。

2025-08-30 14:06:48 186

原创 PCB之板载天线设计

我们先进行铺铜,要对天线部分进行净空(全部层禁止铺铜),设置范围:右边天线与铜相切。当然,和射频天线座子一样,都要多打过孔到gnd网络(提高抗干扰能力)我们尽量把走线设置和焊盘差不多大或者大点,这里是19.6mil。我们用嘉立创阻抗计算器进行计算,我们这里是两层板所以选择模式为。我们的阻抗线宽约23mil,我们就以23mil线宽来布阻抗线。我们发现芯片焊盘太小了无法布23mil这么宽。我们先用细的导线引出来,在中途改为阻抗线宽。,只对天线区域执行该规则。我们需要在规则里面设置。这种板载天线也是要做。

2025-08-21 15:57:05 1113 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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