一、介绍蓝桥杯嵌入式开发板使用的是STM32G431RBT6,这个G系列的mcu使用STM32cubemax配置的时候和普通的F系列不太一样。二、原理图同时开发板预留了两个adc采样通道,分别是PB15和PB12,如果需要adc采样的话,这里我们这里使用两种方式,一种是adc直接采样CPU处理数据,另外一种是采用ADC采样加DMA传输。三、STM32CUBEMAX配置时钟配置:输入外部高速时钟为24MHZ,这里可以将主频调至170MHZ。ADC配置:PB15和PB12位ADC输入3-1ADC直接采样将IN11通道设置为single-endedContinuousConvMode=DISABLE
1、串口阻塞发送串口阻塞发送的意思就是,发送一段数据,在没有发送完所有数据之前,一直停留在此发送函数(可设定阻塞时间),这个过程中会阻塞别的程序运行;1.1、配置HAL库的配置分为两个层次,一个是HAL库内部调用的、与MCU硬件相关的初始化xxx_MspInit,一个是我们外部调用的初始化xxx_Init;这两个初始化函数配置完,就可以进行阻塞式的串口发送了,很简单。1.1.1、HAL_UART_MspInit HAL_UART_MspInit,MCU硬件初始化,需要开启RCC串口时钟、RCC的GPIO端口时钟、配置GPIO的模式;(还有个反初始化HAL_UART_MspDeInit,这里就不
文章概览😶🌫️0说在最前面+实现功能👀1CubeMX中的配置🕶1.1RCC&ClockConfiguration时钟配置🕶1.2SYSDebug设置🕶1.3TIM定时器设置(TIM8-PWM+TIM4-HALL+TIM6简单定时)🥽【TIM4】通用定时器-84MHz-10Hz(T=100ms)的HALL传感器🥽【TIM6】基本定时器-84MHz-50Hz(T=20ms)🥽【TIM8】高级定时器-168MHz-20kHz(T=50us)的PWM输出及触发ADC采样🕶1.4USART3通讯设置(收发数据,把ADC采集数据打出来)🕶1.5GPIOOutput-LED设置输出低电平灯亮🕶1.6ADC
STM32使用ADC+DMA进行多通道模拟量采集(踩坑及通俗解析)利用STM32的片上外设可采集多个模拟量(如传感器数值),并在嵌入式程序中使用。如果只使用了一个通道,用时令ADC转换而后读取DR寄存器即可。多通道时,可利用ADC+DMA可实时,有序的转存多通道数据至程序内存(数组),用时可随时访问并索引到对应通道。CubeMX配置时钟配置如下:原先经常忽视时钟的信息,这里注意一下ADC1,2,3的时钟频率,其于ADC采样时间有关。如果时钟配置的很高,那么选择1.5Cycles可能不满足最小转换时间,产生错误不易debug。ADCs配置如下:ADC1的独立模式工作逻辑:一个ADC外设(A
记录下学习STM32开发板的心得的和遇见的问题。板卡型号:STM32F405RGT6软件:STM32CubeMX、IARSTM32串口外设提供了3种接收和发送方式:阻塞、中断、DMA,主要给大家分享中断方式接收不定长数据和DMA使用空闲中断接收不定长数据。1.阻塞阻塞发送:HAL_StatusTypeDefHAL_UART_Transmit(UART_HandleTypeDef*huart,constuint8_t*pData,uint16_tSize,uint32_tTimeout)阻塞接收:HAL_StatusTypeDefHAL_UART_Receive(UART_HandleTypeD
文章目录1、说明1.1、注意事项:1.2、接收部分1.3、发送部分2、代码2.1、初始化2.2、缓冲接收2.3、缓冲发送2.4、格式化打印1、说明1.1、注意事项:HAL库的DMA底层基本都会默认开启中断使能,如果在STM32CubeMx禁用了中断相关的功能,程序可能会进入空中断回调出不来。切记使用STM32-HAL库的DMA发送时需要开启USART中断和DMA中断。在一般时间要求不是很高很高的场合,使用HAL库自带的函数就可以,并不会很频繁的触发中断占用资源。1.2、接收部分接收DMA初始化成循环传输模式。开启对应DMA通道中断和串口全局中断之前担心开启串口中断会在接收数据时连续触发中断、导
STM32使用DMA传输UART空闲中断中接收的数据遇到的问题以及解决方法CubeMX配置串口配置:使用默认配置(传输数据长度为8Bit,奇偶检验无,停止位为1Bit,接收和发送都使能),因为我的是LIN项目所以使用的时串口的LIN模式,一般就是异步通信打开DMA传输打开串口接收中断生成工程在mian.c中添加如下代码//添加方法定义voidUtil_Receive_IT(UART_HandleTypeDef*huart);//USERCODEBEGIN4之间实现Util_Receive_IT方法/***重写接收中断函数*/voidUtil_Receive_IT(UART_HandleType
0工具准备1.野火stm32f407霸天虎开发板2.LAN8720数据手册3.STM32F4xx中文参考手册1MAC及DMA配置1.1使能ETH时钟stm32的ETH外设挂载在AHB1总线上,位于RCC_AHB1ENR的bit25-bit27:相关语句如下:RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_ETH_MAC|RCC_AHB1Periph_ETH_MAC_Tx|RCC_AHB1Periph_ETH_MAC_Rx,ENABLE);1.2复位MAC寄存器直接调用ETH_DeInit函数来复位ETH外设voidETH_DeInit(void){RCC_AHB1P
不同于移植官方DMP库,在别人标准库基础上移植会更加简单,只要按我的步骤一步一步来,基本不会错,本移植过程适用于F1和F4系列。MPU6050在电赛和制作平衡小车中很常用,所以我记录下来,方便后来者使用,移植过程有什么问题欢迎在评论区留言,我会看的。文章目录一、资料准备二、STM32Cube配置2.1基础配置2.2IIC配置2.3HAL库IIC初始化BUG修改(重点,不修改初始化不了)三、代码移植3.1添加文件到工程中并添加头文件路径3.2开始调教代码四、演示一、资料准备本次实验代码基于Github上一个项目进行,该项目是基于标准库移植的MPU6050代码,所以我们的任务就是将标准库换到HAL
实现目的:利用ADC采集光敏传感器/烟雾传感器的值,并利用串口打印实验平台:正点原子精英版一、简介1.DMA的介绍参考:STM32hal库使用笔记(四)DMA—内存到内存/内存到外设_乱码小伙的博客-CSDN博客2.ADC简介 ADC(Analog-DigitalConverter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁; 12位逐次逼近型ADC,1us转换时间; 输入电压范围:0~3.3V,转换结果范围:0~4095; 18个输入通道,可测量16个外部和2个内部信号源; 规则组和注入组两个转换单元,可利用模拟看