
STM32学习
高咩咩在人间
嵌入式软件开发/研发项目经理,系统分析师,PMP,蓝牙,wifi,移动模块,NB-IOT应用。若粉丝有问题需要解决,可以留言博主,博主会尽快根据问题输出博文供大家参考学习。
展开
-
STM32F4与STM32F1的区别
作为Cortex M3市场的最大占有者,ST公司在2011年又推出基于Cortex M4内核的STM32F4系列产品,相对与STM32F1/F2等Cortex M3产品,STM32F4最大的优势,就是新增了硬件FPU单元以及DSP指令,同时,STM32F4的主频也提高了很多,达到168Mhz(可获得210DMIPS的处理能力),这使得STM32F4尤其适用于需要浮点运算或DSP处理的应用,也被称之为:DSC,具有非常广泛的应用前景。原创 2017-01-09 13:17:41 · 48281 阅读 · 0 评论 -
STM32F4如何设置系统时钟,非常重要
STM32F4的系统时钟非常重要,涉及到整个系统的运行结果,无论是什么操作,都需要时钟信号,不同型号的微控制器的默认系统时钟配置是不同的,这里,给出两种配置STM32F407系统时钟的方法。方法一,采用官方库提供的配置(这里外部晶振8MHz,系统配置为168MHz)STM32F4启动与STM32F10X不同,时钟已经默认配置好启动代码,文原创 2017-05-15 14:58:12 · 42888 阅读 · 2 评论 -
关于STM32F4定时器时钟频率问题
从时钟树中我们可以得知(1)高级定时器timer1, timer8以及通用定时器timer9, timer10, timer11的时钟来源是APB2总线(2)通用定时器timer2~timer5,通用定时器timer12~timer14以及基本定时器timer6,timer7的时钟来源是APB1总线从STM32F4的内部时钟树可知,(1)当APB1和APB2分频数为1的时候,T原创 2017-05-15 15:52:27 · 21191 阅读 · 6 评论 -
关于STM32F4的AHB和APB时钟频率的问题
1.首先注意的的是图中画绿色圈圈的两个,HSE和HSI分别表示外部时钟和内部时钟,其中HSE 是是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,HSE 也可以直接做为系统时钟或者 PLL 输入(从红圈4处可以看出),频率范围为 4MHz~26MHz。STM32默认为25Mhz,像原子的板子就是8Mhz的,所以移植时一定要格外注意。2.注意红圈2代表的部分,这里是主锁相环倍频输出,用原创 2017-05-16 15:12:58 · 25112 阅读 · 3 评论 -
STM32F4移植FAT32系统出现的问题归纳总结
返回值FR_OK (0)函数成功,该文件对象有效。FR_NO_FILE找不到该文件。FR_NO_PATH找不到该路径。FR_INVALID_NAME文件名无效。FR_INVALID_DRIVE驱动器号无效。FR_EXIST该文件已存在。FR_DENIED由于下列原因,所需的访问被拒绝:以写模式打开一个只读文件。由于存在一个同名的只原创 2017-08-04 17:09:55 · 2540 阅读 · 0 评论 -
STM32F4设置NVIC中断优先级分组
中断管理方法:首先,对STM32中断进行分组,组0~4。同时,对每个中断设置一个抢占优先级和一个响应优先级值。分组配置是在寄存器SCB->AIRCR中配置:高优先级的抢占优先级是可以打断正在进行的低抢占优先级中断的。抢占优先级相同的中断,高响应优先级不可以打断低响应优先级的中断。抢占优先级相原创 2017-01-16 14:32:42 · 11399 阅读 · 0 评论 -
STM32如何查看Flash和RAM使用空间以及如何压缩RAM的使用空间
Code是代码占用的空间;RO-data是 Read Only 只读常量的大小,如const型;RW-data是(Read Write) 初始化了的可读写变量的大小;ZI-data是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data不会被算做代码里因为不会被初始化;原创 2017-11-22 17:02:31 · 20133 阅读 · 3 评论 -
KEIL工程目标选项配置
KEIL工程目标选项配置原创 2017-12-13 16:47:02 · 25055 阅读 · 12 评论 -
原创:STM32 SPI主从通信中断方式和非中断方式(包含Hal、库函数及寄存器版本)
今天给大家分享一篇精文章,关于STM32的SPI主从通信,网上的最多分享的大多都是WQ25L128、SD、单个字节的SPI传输以及单个字节接收发送中断的例子,这里,我给大家分享多个字节自定义协议的SPI通信,考虑到有些同学喜欢用STM32cube建立工程,一般称Hal类工程,也有同学喜欢用库函数或者寄存器版本的工程,后两者比较常见,网上都有STM32F103和STM32F407、STM32F429...原创 2018-04-02 22:26:54 · 27926 阅读 · 3 评论 -
sizeof求结构体大小问题
举个很简单的例子:typedef struct{ uint32_t magic; uint64_t create_time; uint8_t sample_rate; uint8_t mark; uint16_t head_type; uint32_t reserved1; uint64_t reserved2;} raw_ecg_object_heade...原创 2018-05-19 12:57:35 · 1423 阅读 · 0 评论 -
STM32F4外部中断入口和外部中断线
STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F407的22个外部中断为:EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连原创 2017-05-15 16:50:01 · 10299 阅读 · 0 评论 -
如何解决STM32F407串口无法发送第一个字节问题
///* CPU的小缺陷:串口配置好,如果直接Send,则第1个字节发送不出去// 如下语句解决第1个字节无法正确发送出去的问题 */ /* 清发送完成标志,Transmission Complete flag */USART_ClearFlag(USART1, USART_FLAG_TXE); USART_ReceiveData(USART1); //读DR USA原创 2017-03-21 09:36:13 · 2391 阅读 · 0 评论 -
关于串口转485通信中丢字段的问题
很多初学者都知道探索者开发板,里面有很多的代码资源,在485通讯这一章内,我在调用原函数的时候发现了个问题,从机返回的数据包在主机接收端少了一个包头,即一个字节的数据,本人参考的是库函数版的代码,通过修改一下代码可以解决该问题:void RS485_Send_Data(u8 *buf,u8 len){u8 t;GPIO_SetBits(GPIOD,GPIO_Pin_10);原创 2017-02-06 14:15:48 · 1998 阅读 · 0 评论 -
STM32F4中GPIO_PuPd寄存器设置上拉与下拉问题
首先 上下拉 是给IO一个默认的状态 比如控制EN的话,那么高有效的我们就下拉,低有效的话我们就上拉而 很多IO 由于CMOS工艺问题会出现float的现象,所以不能悬空 需要PU PD。上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)。上拉就是输入高电平,然后接一个上拉电阻(起保护作用),知道上拉就表示该端口在默认情况下输入为高电平。下拉就相反了,指输入低电平,然原创 2017-01-11 11:14:41 · 28184 阅读 · 0 评论 -
STM32F4串口使用配置(库函数版)
串口设置的一般步骤可以总结为如下几个步骤:1) 串口时钟使能,GPIO时钟使能。2) 设置引脚复用器映射:调用GPIO_PinAFConfig函数。3) GPIO初始化设置:要设置模式为复用功能。4) 串口参数初始化:设置波特率,字长,奇偶校验等参数。5) 开启中断并且初始化NVIC,使能中断(如果需要开启中断才需要这个步骤)。6) 使能串口。7) 编写中断处理函数:函转载 2017-01-11 14:28:42 · 3759 阅读 · 0 评论 -
STM32F4中断抢占优先级和响应优先级的概念
抢占优先级和响应优先级STM32 的中断向量具有两个属性,一个为抢占属性,另一个为响应属性,其属性编号越小,表明它的优先级别越高。抢占,是指打断其它中断的属性,即因为具有这个属性,会出现嵌套中断(在执行中断服务函数 A 的过程中被中断 B 打断,执行完中断服务函数 B 再继续执行中断服务函数 A),抢占属性由 NVIC_IRQChannelPreemptionPriority转载 2017-01-12 14:08:29 · 4751 阅读 · 0 评论 -
遇到Error: Flash Download failed - “Cortex-M4“解决方法
1.SWD模式下,Debug菜单中,Reset菜单选项(Autodetect/HWreset/sysresetReq/Vectreset)默认是AutoDetect,改成SysResetReq即可。2.Jtag模式下,主要是芯片大小选错。Flash->Configure Falsh Tools配置窗口,切换到“Utilities"页,按“Setting"按钮进入“Flash dow原创 2017-03-24 16:16:41 · 31588 阅读 · 2 评论 -
关于STM32F4将数据或文件写入W28Q128(SPI_FLASH)中的方法(精)
将数据或文件写入SPI_FLASH的可用方法(1)使用SD卡更新外部SPI FLASH(W25Q128),将需要写入的数据或文件存储于SD卡中,在通过FATFS文件系统读取写入外部SPI FLASH,可参考原子哥的例程《汉字显示实验》,这种方法适用于大文件和大数据,缺点在于:需要SD外设,适用于功能齐全的开发板,但不适用于外设较少的产品板(无SD外设)(2)使用Jlink和相关软件烧录,方原创 2017-05-23 10:09:58 · 7016 阅读 · 1 评论 -
如何使用STM32F4的BootLoader和APP程序
一.概念扫盲1.IAPIAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一原创 2017-05-09 16:03:47 · 23866 阅读 · 6 评论 -
STM32程序中if和#if的区别
(1)首先,if是条件语句,#if是预处理指令,功能相同,执行的时期不同(2)举例1:#define A 2#if A==2void foo(){ printf("A == 2");}#elsevoid foo(){ printf("A != 2");}原创 2017-05-09 10:25:31 · 7332 阅读 · 0 评论 -
关于STM32程序仿真时卡死在default_handler的解决方法
问题描述:在debugger模式下,运行后,串口通信正常,过一会串口通信异常,暂停仿真发现程序死在default_Handler原因:没有中断入口函数,当然了,有些人可能会这么写void USART1_IRQHandler(void){}以为这样就算是加了中断入口函数了,但开启串口中断接收 USART_ITConfig(USART2, USART_IT_RXNE, EN原创 2017-05-02 12:49:14 · 8161 阅读 · 0 评论 -
STM32F103出现CPU could not be halted问题的解决方案
问题描述:**JLink Warning: CPU could not be halted***JLink Error: Can not read register 15 (R15) while CPU is running***JLink Error: Can not read register 16 (XPSR) while CPU is running***JLink Error: Can ...原创 2018-06-05 09:40:10 · 11232 阅读 · 3 评论