- 博客(21)
- 收藏
- 关注
原创 STM32G070 CubeMX配置多通道/单通道ADC+DMA流程 LL库
问题:代码里先初始化ADC_IN1,再初始化的ADC_IN2,但是内存里面的数据却先是ADC_IN2数据,再是ADC_IN1数据。调试查看内存数据,硬件上将PA1接到GND,PA2接到3V3。基础配置不再赘述,时钟这些根据硬件来配置。采集的数据会循环覆盖内存。
2024-09-12 11:22:30
603
原创 记录以下STM32H7 DMA通道STREAMx与传输完成中断、传输错误中断的对应关系
不要和Channel搞混淆了,Channel数量和DMA传输中断没有关系。UART8_RX 和UART8_TX对应的关系StreamX关系如图。bit6-bit11表示STREAM_1的对应中断位。bit0-bit5表示STREAM_0的对应中断位。
2024-05-11 17:36:26
295
1
原创 STM32输出第一个PWM波形脉宽长的问题
最后输出了一个高电平,但是想最后一个波形直接变成低。添加LL_TIM_SetCounter()语句。1、STM32CUBEMX配置如下。2、输出的波形如图所示。
2024-04-03 15:19:00
388
1
原创 STM32库 函数操作解析 CLEAR_BIT(REG, BIT)
①:读出寄存器的数值保存至变量‘tmpreg’②:将‘tmpreg’的某些位进行复位操作。③:将‘tmpreg’的某些位进行置位操作。④:将‘tmpreg’赋值给寄存器。
2023-11-27 21:27:50
902
原创 STM32 IWDG看门狗溢出时间计算
PRER说明:这里可能会搞混,库里面后缀是:4,8,16,32…以为 PRER=4,8,16,32…2、公式:Tout=((4×2^PRER) ×RLR)/LSI。如分频系数是4分频,那么PRER=0,装载值=4095。Tout:溢出时间(单位:秒)RLR:装载值(0-4095)内部低速时钟:32000hz。PRER:分频系数(0-7)
2023-11-22 18:01:29
778
1
原创 Keil v5.36.0.0 无法使用switch语句 “...”问题
首先一般来说,教科书或者大部分资料都是说case后面只能接整型常量或常量表达式。但是在开发中却碰见了case 1 …3(省略号两侧有空格)这种接范围的用法。经查询可知,GNUC对标准作了扩展,支持case后接一个范围值。ARMCC中加入支持GNU或C99标准的扩展格式。以上语句Keil会出现报错。
2023-07-07 11:34:22
861
1
原创 记录调试STM32 DMA收发逻辑
2、使用1ms定时器判断DMA接收长度变化,开启DMA接收后,DMA开始搬运串口数据至内存,当DMA搬运完第一个字节后,将RS485状态变更为接收,此后DMA每搬运一次串口数据,NDTR寄存器的值会发生变化,连续2ms NDTR值都没有发生变化,证明串口没有数据进行DMA搬运,前台则通过超时机制判断数据时候需要进行处理。3、符合要求的数据则在处理函数中执行DMA发送,回发给主机,开启DMA发送后将RS485状态变更为等待发送完成,发送完成后再次将DMA接收打开,不符合要求的数据则再次将DMA接收打开。
2023-03-27 15:28:35
1210
原创 STM32串口DMA传输完成中断理解
1、根据传输前配置的传输字节数传输完成后(DMA_SxNDTR == 0)产生中断。1、剩余数据已从FIFO传输到内存中。2、还没有传输完成禁止了DMA。2、还没有传输完成禁止了DMA。
2023-03-23 14:26:09
1694
原创 STM32F4串口ORE上溢中断问题
运行一段时间后,从机一直反复进入串口接收中断,中断只判断接收不为空标志,但是进入中断后却没有接收不为空的标志产生,查看串口SR寄存器,发现ORE位置位了。环境:STM32F4 RS485通信,一主多从,19200bps,主机的串口开启了发送DMA与接收DMA,从机只开启了发送DMA,接收采用中断的方式。后面将从机也改为DMA接收试试,接收中断的方式效率太低了,因为从机一直处于接收状态,总线上有其他的数据就会不断的产生中断。临时解决办法:在串口中断中加入以下代码,即可解决问题。
2022-12-18 14:35:59
1629
原创 STM32单片机调试的时候出现进入HardwareFault Callback的窗口出现 _printf_fp_dec_real
STM32卡死原因
2022-10-08 09:20:18
422
原创 STM32G030与STM32F722主从Spi通信问题记录
STM32G030作为从机spi,STM32F722作为主机,两块单片机同一路电源供电,正常上电后,双方在约700ms后,从机突然回复主机相同且连续的错误数据,等下一次主机再与从机通信时,数据出现错帧的情况排查以下原因:1,spi引脚输出速率太高,设置为最低,不行2,降低spi的sck频率至1.3M,不行3,主机发送一字节数据后,延时几us再发送下一字节数据,不行最后突然想起中断优先级是不是影响到了spi的通信:程序里面将嘀嗒定时器的优先级设置为1,spi中断优先级设置为2,嘀嗒定时器会打断spi
2022-09-08 21:43:01
893
原创 STM32开发日志
1、STM32单片机外接16Mhz晶振时,需要更改单片机头文件的宏定义,因为默认是8Mhz。会导致串口打印乱码,时钟不对等。欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带
2020-07-05 20:14:12
1492
原创 基于HAL库的RTC时钟配置
1、配置图2、程序注意想要读出正确的时间,先要使用HAL_RTC_GetTime()函数,再使用HAL_RTC_GetDate()函数,否则读出的时间不正确!!!!!HAL_RTC_GetTime(&hrtc, &Nowtime, RTC_FORMAT_BIN);//必须先获取时间HAL_RTC_GetDate(&hrtc, &Nowdate, RTC...
2020-01-09 10:16:55
5038
原创 记录DMA搬运ADC输出,基于stm32030K6,HAL库配置(自用参考)
1、ADC配置需要使能DMA通道2、DMA配置使用哪个通道进行搬运3、串口打印效果外接3.3v4、程序配置int main(void){ /* USER CODE BEGIN 1 */ uint8_t ver = 0; uint32_t adc_value; /* USER CODE END 1 */ /* MCU Configuration-------...
2020-01-09 09:56:05
471
原创 STM8SF103----ADC采集电压值
1、ADC相关函数配置/*函数名:Init_ADC *功能:初始化ADC *入口参数:无 *函数返回:无 *ADC1_CONVERSIONMODE_CONTINUOUS:连续转换 *ADC1_CHANNEL_4:通道4 *ADC1_PRESSEL_FCPU_D2:时钟分频 *ADC1_EXTTRIG_TIM:DISABLE:不使用外部触发 *ADC1_ALIGN_RIGHT:右对...
2019-12-18 16:43:40
1612
原创 STM8SF103----TIMER1,TIM1_CH4----产生PWM波
1、ADC使用到相关函数配置/*函数名:Init_Timer1 *功能:产生指定占空比PWM波,ad_now_value/ad_value = xx% *入口参数: ad_value:10位ADC采集到的电压值,最大值1023 ad_now_value:当前采集到的电压值 *函数返回:无*/void Init_Timer1(u16 ad_...
2019-12-18 16:37:26
1219
原创 树莓派上传温度数据至 Onenet云平台(HTTP)
因项目功能需要,这次使用的是树莓派3b+,首次使用树莓派,记录一下器材列表:1、树莓派3b+2、ds18b20温度传感器3、可上网的路由器使用带上拉电阻的DS18B20,DQ端口连接树莓派的GPIO25,VCC接3.3V,GND接GND硬件搭建完成开机树莓派,让树莓派与电脑在同一局域网,使用putty登陆树莓派输入命令:sudo raspi-config进入高亮选项卡 5 In...
2019-06-04 09:54:17
6155
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人