STM32开发
文章平均质量分 56
专注于stm32系列的开发,总结STM32开发过程中遇到的问题,总结、积累、记录与分享。
夜风~
手与大脑的距离决定了理想与现实的相似度!
展开
-
STM32——硬件IIC从机通信
前言: 根据网上的资料,大部分网友表示STM32自带的硬件IIC存在bug,读写时很容易卡死。自己在调试的时候也出现卡死的情况,最后一点一点调试,也还是调通了。本文将记录自己调试STM32硬件IIC从机的一些心得体会。硬件IIC主机通信见另一篇文章:传送门 。硬件平台:STM32F205软件平台:keil v5函数库:标准库硬件IIC从机初始化下面看下STM32中IIC的...原创 2018-09-02 17:32:52 · 29564 阅读 · 19 评论 -
STM32——硬件IIC主机通信
前言:根据网上的资料,大部分网友表示STM32自带的硬件IIC存在bug,读写时很容易卡死。自己在调试的时候也出现卡死的情况,最后一点一点调试,也还是调通了。本文将记录自己调试STM32硬件IIC主机的一些心得体会。硬件IIC从机通信见另一篇文章:传送门 。硬件平台:STM32F205软件平台:keil v5函数库:标准库硬件IIC主机初始化IIC的发送时序本文不不做介绍了...原创 2018-09-02 16:29:54 · 35131 阅读 · 10 评论 -
STM32——多通道ADC的DMA方式采集方法
前言:最近在调试STM32F205芯片ADC多通道DMA方式采集数据,总结下STM32多通道ADC的DMA方式采集的使用方法。硬件平台:STM32F205软件平台:keil v5函数库:标准库多通道ADC的配置#define Channel_Num 9 //9 ¸adc的通道数,本例使用9个通道#define Sample_Num 10 //采样次数,本例使用平均滤波...原创 2018-09-02 14:14:08 · 32516 阅读 · 18 评论 -
STM32F2XX——ADC多通道DMA采集时AD值大于4095的问题解决方法
前言 最近在调试STM32F2XX系列ADC多通道DMA采集时,发现采集的AD值大于4095,有的65000多了,这是什么节奏?adc不是12位吗,最大才0xfff,即4095,怎么会出现这种情况呢?难到是adc数据对齐方式出现问题了,adc的对齐明明设置的是右对齐啊,神马情况?ADC结构体参数分析 百思不得adc之姐,只能keil单步调试,一步一步查看adc结构体的参数。我使用的...原创 2018-08-23 20:22:15 · 11535 阅读 · 11 评论 -
STM32—DMA使用
DMA简介DMA:Direct memory access controller,直接存储器存储。DMA可以实现数据在外设与存储器、存储器与存储器之间的快速转换,且不需要CPU的干预,这样就可以释放CPU的资源,让CPU干其他的事情,提高效率。有的STM32芯片有两个DMA,有的就只有一个DMA,这个要查具体的芯片手册。DMA 的主要特性DMA的功能框图DMA参数与原创 2018-01-30 16:43:14 · 8076 阅读 · 2 评论 -
STM32—printf函数重定义
为了便于调试,我们经常要使用到printf函数,打印出调试的信息。在Keil软件中,要使用printf输出函数的话,注意需要先把use MicrolLIB选项选上,如下图。 接着 ,在main函数的添加头文件下方添加printf函数的声明,代码如下:/* Includes -----------------------------------------------------原创 2018-01-30 10:52:44 · 15682 阅读 · 1 评论 -
STM32中time.h文件详解
STM32的time.h文件有时间结构体的定义和时间转化的相关函数。struct tm { int tm_sec; /* seconds after the minute, 0 to 60 (0 - 60 allows for the occasional leap second) */ int tm_min; /* min原创 2018-01-25 16:14:21 · 13345 阅读 · 0 评论 -
STM32—SysTick使用方法
一、STM32的SysTick简介 SysTick是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。systick的作用: 在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的...原创 2018-01-15 17:43:28 · 54379 阅读 · 1 评论 -
STM32—cubeMX+HAL库的SPI接口使用
摘要: 本文主要介绍STM32的SPI接口、cubeMX软件配置SPI接口和分析SPI相关代码。STM32之SPI简介:(1)SPI协议【Serial Peripheral Interface】 串行外围设备接口,是一种高速全双工的通信总线。主要用在MCU与FLASH\ADC\LCD等模块之间的通信。 (2)SPI信号线 SPI 共包含 4 条总线。...原创 2018-01-09 17:54:00 · 101345 阅读 · 5 评论 -
STM32—IWDG看门狗
背景:STM32的看门狗有2个:独立看门狗IWDG和窗口看门狗WWDG本文主要介绍STM32的IWDG。内容:IWDG主要性能(1)自由运行的递减计数器;(2)时钟由独立的RC振荡器提供(可在停止和待机模式下工作),LSI为其时钟源,STOP和SLEEP模式仍可运行;(3)看门狗被激活后,在计数器计数至0x000的的时产生复位。下图为看门狗的框图。上图中,IWD...原创 2018-01-09 08:39:51 · 7479 阅读 · 0 评论 -
STM32—进入STOP模式后功耗下不去问题
背景:最近调试板子进入STOP模式后发现电流为mA级别,功耗降不下去,最终发现是ADC开启后,忘记关闭了,导致有1.45mA的电流消耗。内容:利用HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI)函数使板子进入STOP模式后,电流一直降不下去。之后调了好久,才发现调用ADC采集后,忘记把ADC关掉了,真是蛋疼啊。...原创 2018-01-05 14:19:30 · 12730 阅读 · 3 评论 -
STM32—HAL库中GPIO相关函数解析
背景:最近一直在学习HAL库,总结下STM32中HAL库的GPIO相关函数知识点。内容:在stm32l152xb.h头文件中定义了GPIO的相关寄存器,下面讲述的GPIO函数将会调用到这些寄存器。寄存器的结构体定义如下图:下面解析stm32l1xx_hal_gpio.c文件中一些常用的GPIO函数:(1)GPIO_PinState HAL_GPIO_ReadPi...原创 2018-01-03 11:46:36 · 41557 阅读 · 1 评论 -
STM32—RCC时钟
前言:最近在调试STM32L152芯片,本文总结下STM32L152的RCC时钟配置方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库内容: RCC:Reset and Clock Control,复位与时钟控制系统。系统复位有三种:系统复位、电源复位、RTC domain复位。复位内容本文暂不详解,本文重点详解Clock Co...原创 2017-12-19 10:53:54 · 8902 阅读 · 1 评论 -
STM32-DAC简单使用方法
前言:最近在调试STM32L152芯片的DAC功能,本文总结下STM32L152芯片 DAC简单使用方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库DAC使用方法实现:1.DAC的初始化。DAC_HandleTypeDef hdac; void DAC_Init(void){ DAC_ChannelConfTyp...原创 2017-12-14 13:54:16 · 5704 阅读 · 0 评论 -
关于STM32运行时程序卡在B.处的解决方法
背景:程序运行时,发现程序卡死在B.处。解决方法:程序卡死在B.处说明有中断没有处理,导致程序进入中断后无法跳出。之后查看程序发现,程序中定义了一个中断,但是之前一次偶然把中断处理程序屏蔽了,导致没有中断处理函数。程序如下://开启了EXTI15_10_IRQn中断void nirq_Init(void){ GPIO_InitTypeDef GPIO_Ini...原创 2017-12-12 11:37:22 · 26188 阅读 · 4 评论 -
STM32-基本定时器Timer的使用
前言:最近在调试STM32L152芯片的定时器功能,本文总结下STM32L152芯片基本定时器的使用方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库基本定时器使用方法下面简单讲述一下STM32L152的定时器使用步骤。1.使用CubeMX对定时器进行配置,如定时器预分频值,计数值,定时器的触发方式等。2.下面详细解析相关的代码...原创 2017-12-05 11:31:14 · 16166 阅读 · 0 评论 -
STM32 cubeMX 前期项目未生成部分模块,后期需要添加功能模块时出现L6218E错误问题的解决方法
背景:最近的一个项目cub前期cubeMX未生成Timer部分程序,后期项目需要使用timer时需要往项目添加该部分程序时,编译出现L6218E: Error: L6218E: Undefined symbol HAL_TIMEx_MasterConfigSynchronization (referred from timer.o)等错误。原因:cubeMX软件在配置功能时,使用某一部...原创 2017-12-05 10:40:26 · 3004 阅读 · 1 评论 -
STM32-USART HAL库接收任意长度数据详细解析
前言:最近在调试STM32L152 HAL库串口接收任意长度数据程序,详细解析下接收任意长度数据的方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库STM32L152 —USARTSTM32L152 USART 的HAL库中接收函数:HAL_StatusTypeDef HAL_UART_Receive_IT(UART_Handle...原创 2017-12-04 13:56:16 · 23891 阅读 · 3 评论 -
STM32—RTC
什么是RTC ?RTC:实时时钟(Real-Time Clock),利用RTC可以实现产品的精确计时,比如平时用的笔记本电脑、电子日历等都有RTC模块,当主电源断电时,RTC的模块用电池来供电,继续进行计时。STM32中的RTC和定时器有点类似,有一个32位的计数器,可以计数2的32次方,大约可以计时136年。RTC的结构框图RTC的时钟源(STM32L1系列,其它系列的芯片时钟源...原创 2017-11-30 17:16:52 · 9062 阅读 · 1 评论 -
STM32—USART
前言:最近在调试STM32L152芯片的USART配置程序,实现STM32串口打印功能,本文总结下STM32L152芯片USART的使用方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库1:usart初始化UART_HandleTypeDef huart3;uint8_t rxbuf;void MX_USART3_UART_In...原创 2017-09-04 13:27:33 · 2179 阅读 · 0 评论 -
STM32—基于模拟IIC方式读取EEPROM
前言:最近在调试STM32L152芯片利用IIC接口读取EEPROM的程序,总结下STM32的 IIC接口 读取EEPROM的使用方法。PS:由于STM32的硬件IIC存在一些问题,本文暂时使用模拟IIC进行EEPROM的读取。STM32的硬件IIC使用方法见另外两篇文章:传送门1和传送门2。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL...原创 2017-09-04 10:37:31 · 4852 阅读 · 2 评论 -
STM32—ADC单通道采集模拟量
前言:最近在调试STM32L152芯片ADC单通道采集数据程序,总结下STM32L152芯片ADC单通道采集模拟量的使用方法。硬件平台:STM32L152软件平台:keil v5+cubeMX函数库:HAL库ADC配置过程:1.先初始化ADC的管脚,本例中ADC对应PA1管脚。ADC_HandleTypeDef hadc;void ADC_GPIO_Init(vo...原创 2017-09-01 15:31:34 · 17844 阅读 · 2 评论