- 博客(9)
- 收藏
- 关注
原创 STM32G4使用内部基准校准ADC
VDDA=3*X1/X2.得到VDDA后可以把ADC计算式改为4096/VDDA,这样就精确了。思路,内部校准值为输入3.0V下的1.2V基准,这个值在一个固定地址中记为X1,读出来就可以。校准的前提是VDDA要稳,如果输入变化,VDDA也在变,那初次校准值没有任何意义!然后拿ADC去采内部基准得到记为X2,就可以反算输入电压VDDA了。
2025-04-08 11:43:19
43
原创 STM32多串口共用printf[DMA]
自定义串口函数:UART_Printf_DMA(UART_HandleTypeDef *huart, const char *fmt, ...);通过标志位自锁判断是否发送完成 ,达到分时复用的作用。如果你单片机内存够大,可以每一个串口都搞一个UART_Printf函数。在使用STM32过程中,经常遇到多个串口打印的需求,有没有一种办法可以用一个函数来满足多个串口打印的过程?我们创建串口打印输出完成标志位:uart1_tx_complete,uart2_tx_complete等等。首先在.h声明一堆东西。
2025-01-26 20:12:38
235
原创 VOFA+观察电机波形最高效的方法
首先配置单片机串口为DMA,同时串口波特率要高,保证在一个运算周期内把数据传出去。接下来写代码:首先定义变量,包含三个浮点数,我们要观察这三个数Ia,Ib,Ic。使用STM32G4,VOFA+来观察电源,电机等快速变量变化的办法。再VOFA+中将数据格式选为JustFloat。接下来,在中断处理函数,例如ADC中断里面处理。在VOFA+上添加好控件,就可以看到输出波形了。例如我想观察三相电流波形,如何操作呢?
2025-01-26 19:56:24
222
原创 0.96寸OLED取模软件使用[江科大版]
将取模后数据复制到OLED_Data.C里面,把汉字索引移到前面开头,注意逗号。点击选项,更改选项为这样,注意行前缀和行后缀。下载安装好PCtoLCD2002这个软件,点击模式,选择字符模式。这样就OK了,然后取模。
2025-01-25 17:41:39
205
原创 串口数据包解析(带校验位)
我们需要把DMA接收的数据存储到数组,同时需要标志位来判断接收、解析等是否完毕定义了一个可以存放50个变量的数组,一个状态标志,一个Size用来传递接收长度。
2025-01-15 18:42:07
192
原创 STM32-串口DMA不定长接受【HAL库】
从stm32g4xx_it.c复制这个到main.h的user code begin et位置。在code begin 0这里写DMA中断回调代码。好,这样就实现了串口DMA接收不定长数据。建立一个能装50个数据的接收数据包数组。中断回调函数如下,这里面可以放解析。第三步,添加DMA通道,默认即可。开启DMA接受,关闭接收过半中断。第一步开串口,选择合适波特率。
2025-01-14 19:42:23
352
原创 stm32103c8t6 gpio配置
对GPIO口的简单理解是:输入输出的接口。其输入输出模式共有8种,可以分为:GPIO_Mode_AIM (模拟输入)GPIO_Mode_Out_OD(开漏输出)GPIO_Mode_IN_FLOATING (浮空输入)GPIO_Mode_Out_PP(推挽输出)GPIO_Mode_IPD (下拉输入)GPIO_Mode_AF_OD(复用开漏输出)GPIO_Mode_IPU (上拉输入)GPIO_Mode_AF_OD(复用推挽输出)可以通过GPIO输出点亮一颗LED灯来说
2022-05-07 19:03:02
1486
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人