自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (6)
  • 收藏
  • 关注

原创 STM32CubeMx 生成IAR工程Jlink无法Debug

肯定是工程设置问题喽:设置OK!

2024-05-11 16:05:26 82

原创 STM32CubeMX F405 TIM8 3路输出比较(互补输出)

STM32CubeMX F405 TIM8 3路输出比较(互补输出)

2023-12-22 11:08:26 454

原创 STM32CubeMX 调试单线半双工问题总结

一开始配置开漏输出,网上查阅其他博客讲要外接上拉电阻至3.3v,我调试出现只能接收数据无法发送数据。现改为推挽输出,下拉。(PB8不外接电阻至VCC或GND)

2023-11-30 15:11:15 315

原创 STM32CubeMX HAL F405 TIM1输出多路不同频率及占空比的方波(PWM)(输出比较模式)

TIM1的通道1、2、3输出同频率(8KHz)的PWM波形(占空比50%)TIM1的通道1输出50Hz的PWM波形(占空比50%)(包括增加死区时间效果)

2023-11-29 16:16:23 441

原创 STM32 LL库 TIM3定时器多通道捕获输入采集

TIM2输出1路PWM信号,使用1分3杜邦线接到TIM3的CH2-CH3-CH4通道进行捕获输入。

2023-11-15 10:57:50 1157

原创 STM32 定时器配置不当导致误差(精度)偏大的问题发现与解决

通用定时器TIM2/3/4/5,PWM输出1Khz的波形。示波器端查看效果如下:误差在5.64‰。示波器端查看效果如下:误差在0.2‰。

2023-10-25 16:05:59 1422

原创 STM32F4xx系列定时器区别

STM32F4xx 系列控制器有 2 个高级定时器、 10 个通用定时器和 2 个基本定时器。

2023-07-21 13:18:50 109

原创 STM32G0在使用BootLoader后应用程序不能正常跳转的解决办法

若看到没有定义USER_VECT_TAB_ADDRESS,则把上面一行的/* #defiene USER_VECT_TAB_ADDRESS */改为。现在整个APP的地址偏移0x3000,因此将VECT_TAB_OFFSET修改为0x3000后重新烧录运行程序功能都OK了。其中FLASH_BASE 就是默认程序起始地址0x8000000,VECT_TAB_OFFSET偏移地址默认为0;#defiene USER_VECT_TAB_ADDRESS即可。0x08003000 ~ 最大: app占用;

2023-01-16 09:03:00 2109 1

原创 STM32G0 HAL DMA USART空闲中断 接收到数据发送数据后无法再次接收的问题解决

发送完成进入发送完成回调函数,需要再次启动接收HAL_UARTEx_ReceiveToIdle_DMA。但必须在这个函数调用之前调用MX_USART2_UART_Init重新初始化,不然无法启动接收,主要是。主函数判断rx_done,然后调用HAL_UART_Transmit_DMA发送数据。初始化时调用HAL_UARTEx_ReceiveToIdle_DMA函数启动接收。这些标志位不调用MX_USART2_UART_Init初始化的话,都无法再次使能。

2022-10-11 13:57:06 2115

原创 STM32之USART:RXD和TXD管脚互换、接收和发送的电平极性反转、支持数据高位与低位反序发送或接收

在数据接收发送寄存器中,数据也是可以反转的,原来的0变为1,原来的1变为0,这和电平极性反转是类似。需要特别注意的是,在极性反转的时候,起始位和结束位也都反转了,所有的信号电平都反转;而在数据寄存器中只反转了数据位,其中也包含了校验位,没有反转信号的起始位和结束位的极性。默认的配置都是先发送或接收低位的信号(bit 0),实际应用中,通过USART_CR2中的MSBFIRST设置后,也可以让USART先发送或接收高位信号(bit 7/8),这一点在对数据进行反序的时候会经常用到它。

2022-10-11 08:42:46 3593

原创 STM32 HAL库的串口DMA使用HAL_UART_DMAStop()函数时无法再次接收到数据

当串口接收到数据后产生空闲中断,在中断函数里调用HAL_UART_DMAStop(),停止DMA接收数据,当再次接收数据时,调用HAL_UART_Receive_DMA()函数后无法接收数据。因此在使用 HAL_UART_Receive_DMA( );前需要再次调用MX_USART2_UART_Init();

2022-09-26 15:41:52 1697

原创 解决STM32G071之HAL库:UASRT使用DMA方式只进入中断一次

这里我使能的是串口空闲中断。使用CubeMX配置USART时,需要注意。这两处需要设置DISABLE.

2022-09-23 16:14:18 774

原创 STM32 ContinuousConvMode和DiscontinuousConvMode的组合方式

ContinuousConvMode ,DiscontinuousConvMode这两个参数,乍一看只需要一个就好了,只要决定是不是连续转换就可以了。但实际上这两个参数是为了配置出更多的模式。公式:Vref = (1.2 / (adc_vref / 4095 * 3.3)) * 3.3。其中adc_vref为adc内部参考电压通道的数值。实际电压 = Vref * Vch / 4095。(Vch是通道采集的adc的值)

2022-09-20 15:15:16 1441

原创 MPU6050原始数据对应关系

MPU6050原始数据对应关系

2022-08-30 10:43:12 2846

原创 如何使用Simplicity Studio V5开发基于EFR32BG22的蓝牙产品?

如何使用Simplicity Studio V5开发基于EFR32BG22的蓝牙产品

2022-08-15 15:41:18 1588

原创 使用AW9523B芯片驱动16路LED时,LED出现误点亮的问题

使用AW9523B芯片驱动16路LED时,某些LED误点亮的问题

2022-07-26 09:49:33 1497 2

原创 OLED显示如何理解 12*6、16*8、24*12等字符大小

OLED显示如何理解 12*6、16*8、24*12等字符大小

2022-07-15 14:59:32 4585 1

原创 爱快安装或重置后,PC或手机端获取不到ip

爱快安装或重置后无法获取IP

2022-06-27 11:43:35 2431

原创 LSM6DSL之SPI驱动

LSM6DSL的SPI驱动

2022-06-25 16:20:20 1375 5

原创 Simplicity Studio无法识别新买的JLink v9解决方法

Simplicity Studio无法识别新买的JLink v9解决方法在步骤4的框里输入准确的MCU型号(如EFR32xxxxxxxxxxxx)即可使用Jlink进行编程下载了。

2022-06-23 13:40:03 2660

原创 串口空闲中断+DMA接收数据错位

DMA的接收缓存区长度一定要大于实际数据的最大长度。

2022-06-15 10:10:45 734

原创 AW9523B IIC驱动

/** Registers *//* 读为1,写为0 */#define AW9523B_KeyMode_DeviceAddre 0xB0 ///< Device Addres for AW9523B#define AW9523B_LedMode_DeviceAddre 0xB6 ///< Device Addres for AW9523B#define AW9523B_REG_ID 0x10 ///< id register#define..

2022-05-11 14:01:16 1597 5

原创 关于STM32G030F6的ADC采集不准的问题

先看一下我配置4个ADC通道,在不采集任何模拟电压时的状态:可以看出,这颗芯片采集的ADC值漂的有点厉害,如果对采集要求比较高的项目建议更换其他MCU。

2022-03-30 08:59:27 1744

原创 STM32 ADC 有关精度参数的理解(ET、EO、EG、ED、EL)

提到ADC,都会问是10位12位16位是什么意思?10位就是10位2进制的意思0-1023。12位就是12位2进制的意思0-4095。16位就是16位2进制的意思0-65534。也就是ADC的分辨率。比如说我们想采集一个3.3v的电压值,3.3v分成1024份表示和分成65536份表示,当然65536表示的精度更高。ADC里叫LSB,也就是1024 LSB。如何选择ADC我们在选择ADC的时候除了要知道他的分辨率,参考电压,还有速度之外还要知道一些ADC的性能指标。这些性能指标会影响你的采集精

2022-03-30 08:51:09 6887

原创 STM32 关于VDD、VSS、VDDA、VSSA、VREF+等标识解释

为了提高转换的精确度,ADC使用一个独立的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰,ADC的电源引脚为VDDA,独立的电源地VSSA,如果有VREF- 引脚(根据封装而定),它必须连接到VSSA,确保共地。...

2022-03-29 15:24:37 2915

原创 Ublox GPS模块型号入门介绍

位于瑞士的定位和无线模块及芯片公司u-blox(SIX:UBXN)推出封装形式多模GNSS接收机模块MAX-7、NEO-7和LEA-7MAX-7、NEO-7和LEA-7系列模块以业界最低的功耗提供快速、准确、可靠的GLONASS和GPS定位。GPS和GLONASS模式的性能甚至优于目前市场上的GPS / GLONASS混合定位解决方案。所有u-blox7模块均可与之前的u-blox6和u-blox5模块管脚相兼容,可使现有设计实现轻松升级。每种模块均提供低成本的型号(如MAX-7C; NEO-7M)以及

2022-03-18 09:54:26 3187

原创 冒泡排序函数 C语言版本

void BubbleSort(uint16_t a[], uint16_t len) //由小到大排序{ uint16_t temp; for(uint16_t j = 0; j < len - 1; j++) { for(uint16_t i = 0; i < len - 1 - j; i++) if(a[i] > a[i + 1]) { temp = a[i]; a[i] = a[i + 1]; a[i + 1] = temp; }

2022-03-17 09:37:00 896

转载 u-center软件 使用

使用u-center软件时请先检查驱动是否安装完成(如CH340/PL2303),后连接数据线等https://blog.csdn.net/qq_34689354/article/details/115375744

2022-03-14 15:53:42 1322

原创 TTL(UART)信号和RS232信号 对比

UART可以用来已串行方式收发数据。UART是,以固定的某个速率(1200bps,9600bps,115200bps等),一次只能只传输一个bit比特位(所以叫做串行传输)这种串行通信的方法,有时候也被叫做TTL(Transistor-Transistor Logic)Serial。这种串行通信,在TTL级别上来说,对应的物理电平,始终是在0V和Vcc之间,其中常见的Vcc是5V或3.3V。其中:逻辑高电平==’1’==Vcc逻辑低电平==’0’==0V与此相对应的是你的(台式机,笔记本等)电脑中

2022-03-12 13:10:03 3462

原创 OLED显示图片的取模方式(一定要注意图片的分辨率)

此图片的属性显示分辨率为916。此图片的属性显示分辨率为4216。取模软件设置后生成的数组可以直接调用。调用图片显示函时/* * @param x0 : 列地址-起(0~127) y0 : 页地址-起(0~7) x1 : 列地址-终(0~127) y1 : 页地址-终(0~7) BMP: 存储图片的数组 */void OLED_DrawBMP(unsigned ch.

2022-03-10 17:06:52 3223

原创 使用STM32CubeMx软件生成定时器中断时,定时器无法进入中断

由于自动生成的工程是没有启动定时器的,所以定时器是没有工作。在TIMx_Initx()函数里添加这边代码即可:HAL_TIM_Base_Start_IT(&htim3);

2022-03-09 14:45:24 3219 2

原创 STM32G0系列 ADC多通道采集时,部分通道采集数值为0的问题分析

STM32G0的 ADC 序列器配置成完全可配置时,只能使用通道 0-14,不能使用通道 15,16,17,18;所以在有使用到通道 15,16,17,18 的情况下,ADC 序列器要配置成不完全可配置。Sequencer 选项选择为:Sequencer not fully configurable 如果是多通道则 Discontinuous Conversion Mode 要使能。...

2022-03-03 15:40:24 1990

原创 STM32G0系列 Jlink无法识别下载调试的解决办法

JlinK识别不到STM32G0系列,建议用STLink。

2022-03-02 16:41:42 1571

原创 关于STM32单片机 延时不准的解决办法

当你学习STM32单片机时,调用网上的延时函数点LED时若发现延时明显不对时请参看以下代码:void delay_init(u8 SYSCLK){ SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); fac_us=SYSCLK/8; //不论是否使用OS,fac_us都需要使用 fac_ms=(u16)fac_us*1000; //非OS下,代表每个ms需要的systick时钟数 } 改为如下:void de

2022-02-12 14:51:23 3455 3

原创 STM32F4 如何读取芯片96位的唯一设备标识符 (Unique Device ID)

96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远不能改变这些位。96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接起来。基址:0x1FFF7A10/*获取一个96位的CpuID,用数组保存;以全字(32位)读取;基地址:0x1FFF7A10;*/void GetSTM32_CpuID(uint32_t* CpuID){ //获取CPU唯一ID CpuID[0] = *(uint32_t*)(0x1FFF7A10);

2022-01-26 08:24:24 807

原创 STM32F4 如何读取芯片96位的唯一设备标识符 (Unique Device ID)

96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远不能改变这些位。96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接起来。基址:0x1FFF7A10/*获取一个96位的CpuID,用数组保存;以全字(32位)读取;基地址:0x1FFF7A10;*/void GetSTM32_CpuID(uint32_t* CpuID){ //获取CPU唯一ID CpuID[0] = *(uint32_t*)(0x1FFF7A10);

2022-01-26 08:19:20 1048

原创 详解 三种蓝牙协议栈方案

不同的应用场景有不同的需求,因此不同的应用场景对蓝牙实现方案的要求也不一样,从而催生不同的蓝牙架构实现方案,或者说蓝牙协议栈方案。架构1:host+controller双芯片标准架构蓝牙是跟随手机而诞生的,如何在手机中实现蓝牙应用,是蓝牙规格首先要考虑的问题。如果你仔细阅读蓝牙核心规格,你会发现规格书更多地是站在手机角度来阐述的,然后“顺带”描述一下手机周边蓝牙设备的实现原理。如大家所熟知,手机里面包含很多SoC或者模块,每颗SoC或者模块都有自己独有的功能。比如手机应用跑在AP芯片上(一般而言,An

2021-12-23 18:22:46 2857

原创 带你分析 低功耗蓝牙(BLE)协议栈

协议栈框架一般而言我们把某个协议的实现代码称为协议栈(protocol stack),BLE协议栈是实现低功耗蓝牙协议的代码,理解和掌握BLE协议是实现BLE协议栈的前提。如图所述,要实现一个BLE应用,首先需要一个支持BLE射频的芯片,然后还需要提供一个与此芯片配套的BLE协议栈,最后在协议栈上开发自己的应用。可以看出BLE协议栈是连接芯片和应用的桥梁,是实现整个BLE应用的关键。简单来说,BLE协议栈主要用来对你的应用数据进行层层封包,以生成一个满足BLE协议的空中数据包,也就是说,把应用数据

2021-12-23 17:06:26 1981

原创 EFR32BG22 Thunderboard开发板 使用SPI 读取加速度计

Simplicity Studio v5 创建Silicon Labs蓝牙SoC EFR32BG22 Thunderboard模块的加速度计工程,模块上有一个ICM-20648 6轴运动跟踪设备,集成3轴加速度计和3轴陀螺仪功能,使用SPI接口跟EFR32BG22芯片连接。我尽量以图片的形式展示(少打字):将EFR32BG22的Thunderboard模块通过USB线插入到电脑,打开Simplicity Studio v5软件。下面看重点:点击搜索到的IO Stream: USART,点击Ins

2021-12-21 18:33:54 929

原创 EFR32BG22 使用Simplicity Studio v5生成Bootloader

当你拿到一颗全新的Silicon Labs EFR32BG22 蓝牙SoC芯片,使用Bluetooth例程soc-empty编译完成烧录后,程序没有运行起来,例如使用手机打开EFRConnect软件搜不到“soc-empty”这个广播名字,或者在点完debug后程序没有跳转到mian而且无法点击“Resume”运行,此时,最可能的情况是新的芯片内部没有Bootloader,导致程序无法正常跳转到用户main函数,需要下载EFR32BG22的Bootloader到芯片。那如何使用Simplicity Stu

2021-12-20 13:41:58 1544

STM32G071G8U6 USART2+DMA+空闲中断 LL库

STM32G071G8U6 USART2+DMA+空闲中断 LL库

2024-02-27

STM32 TIM1输出3组同频率互补PWM波形和1个其他频率PWM波形

TIM1_1/TIM1_1N、TIM1_2/TIM1_2N、TIM1_3/TIM1_3N输出8KHz方波,TIM1_4输出50Hz方波

2023-11-29

STM32 LL库 TIM定时器3通道捕获输入检测PWM

STM32 LL库 TIM定时器3通道捕获输入检测PWM

2023-11-15

STM32 硬件SPI+DMA控制OLED屏幕

STM32 硬件SPI+DMA控制OLED屏幕

2023-10-14

STM32G071 HAL USART DMA 解决只能接受一次的问题

STM32G071 HAL USART DMA 解决只能接受一次的问题

2022-10-11

STM32 ADC+USART DMA传输数据

STM32 ADC和USART同时使用 DMA模式传输数据

2022-09-24

lsm6dsl_官方驱动+中英文文档.7z

ST公司的六轴 3D 加速度计和 3D 陀螺仪传感器资料

2021-12-06

EFR32BG22_Templelate.7z

这是我自己建立的一个工程,后边已经实现USART+DMA功能了,此工程亲测可用。

2021-04-10

stm32f103工程的建立

基于固件库STM32F10x_StdPeriph_Lib_V3.5.0,适合新手学习

2018-01-24

stm32f103工程的建立。

基于固件库STM32F10x_StdPeriph_Lib_V3.5.0,适合新手学习。

2018-01-24

stm32F0新建工程步骤

基于STM32F0xx_StdPeriph_Lib_V1.2.0而建立起来的,适合新手学习参考。

2018-01-24

VS2005软件开发说明文档

开发文档

2017-05-03

空空如也

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

TA关注的人

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