STM32
文章平均质量分 56
Surferqing_
物有本末、事有终始,知所先后,则近道矣。
展开
-
STM32的HAL库的SPI调试LD3320通信
厂家提供的STM32固件库程序移植到HAL库,程序修改完成,但SPI读写LD3320寄存器失败,一开始想各种原因,排除,上示波器,又买了逻辑分析仪抓取波形..........一通操作猛如虎,从19年改代码到20年,哈哈哈哈。最后发现原因是HAL库读写寄存器函数没有严格按照数据手册提供的SPI读写时序来。时序如下图。这个问题也算为自己积累了经验吧。最后附上逻辑分析仪抓取的波形,如...原创 2020-01-04 20:26:27 · 4141 阅读 · 6 评论 -
STM32之定时器中断
STM32总共有8个定时器,TIM1和TIM8是16位的高级定时器,TIM2、TIM3、TIM4、TIM5是通用定时器。本实验中只是讲解通用定时器TIM3,利用TIM3产生4路不同占空比的方波。通用TIMx (TIM2、TIM3、TIM4和TIM5)定时器功能包括:● 16位向上、向下、向上/向下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~6...原创 2018-10-11 17:40:05 · 5092 阅读 · 1 评论 -
STM32之串口通信
串口的通讯协议,我们知道要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传输的数据位数)、奇偶校验位、还有停止位。对ST库函数的使用已经上手的读者应该能猜到,在初始化串口的时候,必然有一个串口初始化结构体,这个结构体的几个成员肯定就是有来存储这些控制参数的。温串口的通讯协议,我们知道要配置串口通讯,至少要设置以下几个参数:字长(一次传送的数据长度)、波特率(每秒传...原创 2018-10-11 17:18:10 · 1222 阅读 · 0 评论 -
Cortex-M3预览节选
Cortex-M3 Cortex-M3 是一个 32 位处理器内核。内部的数据路径是 32 位的,寄存器是 32 位的,存储接口也是 32 位的。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据问并行不悖。这样一来数据访问不再占用指令总线,从而提升了性能。为实现这个特性...原创 2018-10-03 16:20:18 · 280 阅读 · 0 评论 -
STM32中NVIC中断控制器的疑惑解答
要配置这些优先级组,可以采用库函数NVIC_ Priority Config,可输入的参数为NVIC_PriorityGroup PriorityGroup-4_4,分别为以上介绍的5种分配组。于是,有读者觉得疑惑了,如此强大的STm32,所有GPIO都能够配置成外部中断,USART、ADC等外设也有中断,而NVIC只能配置16种中断向量,那在某个工程中使用了超过16个的中断怎么办呢?注意NVIC...原创 2018-10-11 11:04:07 · 547 阅读 · 0 评论 -
STM32 Cortex-M3 Hard Fault硬错误
Hard fault (硬错误,也有译为硬件错误的)是在STM32(如无特别说明,这里的STM32指的是Cortex-M3的核)上编写程序中所产生的错误,造成Hard Fault错误的原因也是最为纷繁复杂的。由于能导致该错误的原因很多,所以一但出现,比较难找到其原因。网上有很多类似的这种方法,现在我将其稍加整理,并结合我曾经遇到过的问题,详细说明。硬fault 是总线fault、存储器管理fa...转载 2018-10-11 10:48:27 · 5256 阅读 · 0 评论 -
STM32库开发的好处
1.程序基本不用改就可以移植到各个应用中,便于移植。2.用结构体封装寄存器参数。(重要)3.用宏表示参数,意义明确。(重要)4.用函数封装对寄存器的操作。(重要)5.C语言,程序控制语句结构化,以函数作为程序单元便于模块化,贴近人的思维易读性。在学习STM库开发时,时刻想着结构体去初始化模块,参数宏和函数封装实现模块的功能(不要去想其他的hhhh),抓住以上5点去思考硬件的实现...原创 2018-10-11 09:25:57 · 3280 阅读 · 0 评论 -
为什么晶振不集成到芯片内部去呢?
原因1、早些年, 芯片的生产制作工艺也许还不能够将晶振做进芯片内部, 但是现在可以了. 这个问题主要还是实用性和成本决定的 原因2、芯片和晶振的材料是不同的, 芯片 (集成电路) 的材料是硅, 而晶体则是石英 (二氧化硅), 没法做在一起, 但是可以封装在一起, 目前已经可以实现了, 但是成本就比较高了。 原因3、 晶振一旦封装进芯片内部, 频率也固定死了, 想再更换频率...转载 2018-09-07 16:12:05 · 3960 阅读 · 0 评论 -
为什么 fac_us=SystemCoreClock/8000000?
问一个小问题 关于fac_us=SystemCoreClock/8000000; 怎么是1US呢 72MHZ的八分频是9MHZ即SysTick即为9MHZ 那再除8M也不能是1us啊 ?下面的函数不是说明 fac_us ==1us吗? void delay_us(u32 nus) { u32 temp; SysTick->LOAD=nu...转载 2018-08-25 21:51:27 · 4678 阅读 · 0 评论 -
为什么STM2的时钟这么复杂?
时钟有倍频,分频及一系列的外设时钟的开关。需要倍频是考虑到电磁兼容性,如外部直接提供一个72MHZ的晶振,太高的震荡频率可能会给制作电路板带来一定的难度。分频是因为STM32既有高速外设又有低速外设,各种外设的工作频率不尽相同,如电脑的南北桥,把高速和低速的设备分开管理。最后,每个外设都配备了外设时钟开关,当我们不是使用某个外设时,可以把这个外设时钟关闭,从而降低STM32的...原创 2018-08-31 17:47:31 · 588 阅读 · 0 评论 -
50条STM32单片机学习笔记
重要 —— 另一篇博文STM32单片机学习笔记 1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2>1,意思是APB2接高速设备2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用3、HSE Osc(High Sp...转载 2018-08-28 21:00:56 · 3449 阅读 · 0 评论 -
stm32中定时器中断的套路
首先要提到的是,在stm32中,定时器相关的库函数主要集中在固件库文件 stm32f10x_tim.h 和 stm32f10x_tim.c 文件中,所以在进行定时器方面的处理时,需要加载这两个文件进来。在进行定时器操作时,一般按如下步骤来进行: 1、打开相关外设的时钟。以定时器TIM3为例,由stm32的时钟树可以看到,TIM3时钟挂接在APB1上面,所以打开TIM3时钟时使用RCC...转载 2018-10-11 18:12:09 · 28923 阅读 · 3 评论 -
一文读懂STM32的基本系统
STM32基本系统主要有下面几个部分:电源无论是否使用模拟部分和AD部分,MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接,不可悬空对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于滤波,并接该电容应放置尽量靠近MCU 用万用表测试供电电压是否正确,调试时最好用数字电源供电,以便过压或过流烧坏板子,电压最好一步一步从进线端测试...转载 2018-10-14 16:13:38 · 1892 阅读 · 0 评论 -
嵌入式C语言编程小知识
1. 流水线被指令填满时才能发挥最大效能,即每时钟周期完成一条指令的执行(仅指单周期指令)。如果程序发生跳转,流水线会被清空,这将需要几个时钟才能使流水线再次填满。因此,尽量少的使用跳转指令可以提高程序执行效率,解决发案就是尽量使用指令的“条件执行”功能。2. 在LPC2200系列中:可以通过过下面的程序延迟10毫秒:for(i=0;i<200;i++){for(j=0;j&l...转载 2019-05-23 18:39:43 · 430 阅读 · 0 评论 -
嵌入式实时系统中局部变量和全局变量
一、首先简要介绍局部变量和全局变量区别(1)作用域全局变量具有全局作用域,适用于所有源文件。但在不包含全局变量定义的文件中,需使用extern关键字声明这个全局变量后,方可正常使用。静态全局变量也具有全局作用域。它与全局变量的区别是,它仅仅作用于定义它的文件,程序中其他文件不可用。局部变量只有局部作用域。只在函数执行期间存在,当函数调用结束后,变量将被撤销,其所占用内存被收回。...转载 2019-05-23 18:34:20 · 2649 阅读 · 0 评论 -
usb转串口,232电平,TTL电平
TTL电平:一般用作数字芯片的电平(单片机大多是TTL电平,只是不同的电压标准)232电平:232电平特制电脑串口的电平USB:除去屏蔽层,有4根线,分别是VCC、GND和D+、D-两根信号线。5V是USB的电源电压,给USB device供电用的。信号线对于2.0, D+比D-大200mV时为1,D-比D+大200mV时为0,属差分信号,与TTL电平不兼容,信号传输时需要电...原创 2019-05-04 16:44:10 · 9101 阅读 · 0 评论 -
STM32库的理解
最后在用keil 建立自己工程把上图中的文件(.c文件)加入到你的项目中去。keil指定好.h文件路径。以上截取上课的PPT,方便自己随时查看。不过操作起来还是有难度的,对小白不友好。在建立的STM32库时,有错误随时百度,建议用(www .bing.com 你懂的)注意: 在向keil u5 中添加文件是不要漏加启动文件(startu...原创 2019-03-29 14:54:59 · 371 阅读 · 0 评论 -
「详细」搭建Linux下STM32开发环境
转载微信公众号 点击链接MDK+Jlink的开发环境集编译、下载、调试为一体,配合上友好的操作界面,给用户者提供了很Happy的开发工具。但是,曾经玩过Linux系统的人总想尝试对开发环境的一次搬移,转战到Linux下看有什么事情发生。 在Linux下,搭建STM32的开发环境是一种具有挑战性的任务,从中我们能学到如何创造一个集成开发环境,或者说我们知道集成开发环境的构成元素。不得不提出...转载 2019-03-29 14:15:42 · 1974 阅读 · 1 评论 -
ROM, FLASH和RAM的区别
初学MCU的人,经常会看到ROM, RAM, FLASH,而且会被这些词汇搞得晕头转向。本文对这些概念进行了厘清,并介绍了这些Memory的区别,以及它们在MCU中的作用。ROM (Read Only Memory)程序存储器ROM全称Read Only Memory,顾名思义,它是一种只能读出事先所存的数据的固态半导体存储器。ROM中所存数据稳定,一旦存储数据就再也无法将之改变或者...转载 2019-02-28 10:39:52 · 21259 阅读 · 2 评论 -
ARM CORTEX-M3 内核架构理解归纳
ARM CORTEX-M3 内核架构理解归纳来源:网络 个人觉得对CM3架构归纳的非常不错,因此转载基于《ARM-CORTEX M3 权威指南》做学习总结;在我看来,Cotex-M3内核的主要包括:嵌套向量中断控制器(NVIC),取值单元,指令译码器,算数逻辑单元(ALU),寄存器组,存储器映射(4GB统一编址各区域功能的划分与界定),对于开发者而言,其实主要关注的主要分为三大块:...转载 2019-02-09 20:00:05 · 8036 阅读 · 0 评论 -
以通俗易懂的话解释CM3内核时钟源
最近一直在做单片机通信方面的程序测试,成果之一就是以战舰板串口2向野火开发板串口1发送字符或字符串,战舰板作为主机设计了触摸屏界面,可以根据界面随心所欲地向从机发送字符或字符串还包括汉字。基于此,正在设计一个通过战舰板RS485控制西门子S7-200PLC的程序;这也是现在工业自动化最常见的一种控制模式。言归正传: CM3内核的时钟树很复杂,什么系统时钟,总线时钟,外部时钟,内部时钟的...转载 2019-02-09 19:53:17 · 1497 阅读 · 0 评论 -
ARM常用的22个概念!
1.ARM中一些常见英文缩写解释MSB:最高有效位;LSB:最低有效位;AHB:先进的高性能总线;VPB:连接片内外设功能的VLSI外设总线;EMC:外部存储器控制器;MAM:存储器加速模块;VIC:向量中断控制器;SPI:全双工串行接口;CAN:控制器局域网,一种串行通讯协议;PWM:脉宽调制器;ETM:嵌入式跟踪宏;CPSR:当前程序状态寄存器;...转载 2018-10-15 20:31:14 · 915 阅读 · 0 评论 -
嵌入式工程师,你知道.c文件和.h的区别吗?
.c文件是程序设计中的一个重要概念。所谓“文件”一般是指存储在外部介质上数据的集合。一批文件是以数据的形式存放在外部介质(如磁盘)上的。操作系统是以文件为单位对数据进行管理的,也就是说,如果想找存在外部介质上的数据,必须先按文件名找到指定的文件,然后再从该文件中读取数据。要向外部介质上存储数据也必须先建立一个文件(以文件名标识),才能向它输出数据。 1 .h文件作用 方便开发:...转载 2018-10-15 20:19:56 · 2930 阅读 · 0 评论 -
keil 编译以后,查看代码的大小
关于段的补充:段可以分为代码段和数据段,其中代码段的内容就是可执行代码。Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data 是(Zero Initialize) 没有初始化的可读写变量的大小。ZI-data 不会被算做代码里因为不会被初始化...原创 2018-08-20 15:55:53 · 7537 阅读 · 0 评论 -
STM32输入输出模式理解
我的另一篇博文::对STM32 IO口推挽,开漏输出详解最近在看数据手册的时候,发现在Cortex-M3里,对于GPIO的配置种类有8种之多:(1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入(3)GPIO_Mode_IPD 下拉输入(4)GPIO_Mode_IPU 上拉输入(5)GPIO_Mode_Out_OD 开漏输出(6)GPIO_...转载 2018-08-27 09:55:49 · 2405 阅读 · 0 评论 -
单片机STM32的引脚模式设置
转载---瑞生网点击打开链接单片机STM32的引脚有多种方式可以选择。如果你是用直接写寄存器来配置的话,那么,看上手册,给“配置寄存器”对应的位写0或者1就可以达到目的。如下图:如果是用库函数来配置的话,就需要知道下面这个结构体中的变量代表的意义。库函数,选择好GPIO_Mode之后,就要使用GPIO_Init()函数来配置,你可以打开这个配置函数,实际上也是在对“配置寄存器”进行写操作。先解释一...转载 2018-06-26 19:19:22 · 25268 阅读 · 1 评论 -
利用.bat(批处理)来删除KEIL编译生成的无用文件.
转载---正点原子keil5删除编译的无用文件新建一个.txt文件.在里面输入如下内容:del *.bak /sdel *.ddk /sdel *.edk /sdel *.lst /sdel *.lnp /sdel *.mpf /sdel *.mpj /sdel *.obj /sdel *.omf /s::del *.opt /s ::不允许删除JTAG的设置del *.plg /sdel *....转载 2018-06-05 08:45:01 · 3624 阅读 · 1 评论 -
STM32单片机的接收不定长度数据方法改进
转载---点击打开链接原子哥的开发板例程《实验4 串口实验》中,是利用特殊数据(回车符)来确定结束的,所以必须在发送数据后再发送一个回车符(比如说有的项目中一帧数据中中间要是有回车符就没法用了),其实STM32单片机的接收不定长度字节的数据有种比较方便的方法,那就是利用STM32单片机的IDLE中断,可以接收不定长字节的数据。大致介绍下IDLE中断①IDLE中断什么时候发生?IDLE就是串口收到一...转载 2018-06-03 21:21:10 · 1150 阅读 · 0 评论 -
关于行结束符(CR、LF)
转载--点击打开链接CR(Carriage Return)表示回车LF(Line Feed)表示换行 Dos和Windows采用回车+换行(CR+LF)表示下一行而UNIX/Linux采用换行符(LF)表示下一行苹果机(MAC OS系统)则采用回车符(CR)表示下一行 Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的。 现在好多文本工具都...转载 2018-06-03 10:13:15 · 66449 阅读 · 2 评论 -
牛人已经总结了单片机应用程序架构,去看即可!
转载----在工作中经过摸索实验,总结出单片机大致应用程序的架构有三种:1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。3. 操作系统,此法应该是应用程序编写的最高境界。一、顺序执行法这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,...转载 2018-05-22 21:29:28 · 19327 阅读 · 2 评论 -
大白带你重玩STM32系列(八)——详解STM32的时钟树
http://forum.eepw.com.cn/thread/288123/1 上一讲当中,我们简单提到了STM32的时钟源。我们知道STM32的系统时钟的选择是可以通过对其内部的时钟管理寄存器的操作来进行选择。那么这些寄存器操作的是芯片内部的哪些电路,以及芯片内各部分外设具体的时钟频率又是如何确定的呢?带着这个问题,我们一起详细了解一下STM32的时钟树。时钟树是了解STM32时钟的灵魂,ST...转载 2018-05-22 21:27:28 · 2192 阅读 · 0 评论 -
关于STM32空闲中断
转载----------------空闲中断http://www.cnblogs.com/yangfengwu/p/6746403.html关于STM32空闲中断有一次做一个东西,为了尽量不占用CPU的处理数据时间,所以就使用DMA接收串口的数据,但是呢问题来了.,,,,,怎么样才能确定接收到了一条完整的数据了,,我们都知道只要打开DMA那家伙就不停的把接收的数据放到我们指定的地方.只要接收到一条...转载 2018-05-14 20:00:54 · 5131 阅读 · 2 评论 -
stm32 串口中断总结
转载--------- stm32 串口中断总结 - 【stm32/stm8】 - 电子工程世界-论坛 http://bbs.eeworld.com.cn/thread-376382-1-1.html本文以USART1为例,叙述串口中断的编程过程。1、先来讲述一下在应用串口中断时涉及到的一些库文件。首先对于STM32外设库文件的应用编程,misc.c和stm32f10x_rcc.c是肯定要...转载 2018-05-13 15:51:15 · 9226 阅读 · 0 评论 -
STM32 NVIC 中断 优先级
中断 优先级 管理CM3 内核支持 256 个中断,其中包含了 16 个内核中断和 240 个外部中断,并且具有 256级的可编程中断设置。但 STM32 并没有使用 CM3 内核的全部东西,而是只用了它的一部分。STM32 有 84 个中断,包括 16 个内核中断和 68 个可屏蔽中断,具有 16 级可编程的中断优先级。而我们常用的就是这 68 个可屏蔽中断,但是 STM32 的 68 个可屏蔽...原创 2018-05-12 21:02:15 · 671 阅读 · 0 评论 -
你不知道的24CXX系列芯片的细节问题
转载-----瑞生网在电子开发过程中,会遇到很多莫名其妙的问题,很多人都会怪罪于硬件本身或者电路连接,但实际上,大多数情况下,都是自己对硬件的一知半解造成的,瑞生今天给大家说说在使用AT24CXX系列的EEPROM芯片时,大多数人都不知道的细节。希望对你做(高稳定)(高可靠)(高质量)产品有帮助。1.给24cxx写入数据后,要等待至少5ms,才能再对它进行读写操作,你知道吗?上图是24cxx的da...转载 2018-06-26 19:36:51 · 5101 阅读 · 0 评论 -
STM32引脚列表中主功能,默认复用功能和重定义功能的区别&STM32F103RCT6引脚功能及使用
-------转载------1 主功能就是STM32基本IO口,与外设没有连接的,我们可以直接输出或读入高低电平使用时采用要初始化GPIO结构体参数,并打开端口的时钟2 默认复用功能是与外设连接的IO口,单片机通过控制IO口控制外设。使用时采用要初始化GPIO结构体参数,IO口的工作模式要更具STM32中文参考手册中,IO口复用功能的设置工作模式,设置时,与主功能的唯一区别就是IO口的工作模式的...转载 2018-06-28 09:05:45 · 25548 阅读 · 3 评论 -
对STM32 IO口推挽,开漏输出详解
GPIO 是通用输入输出端口的简称,简单来说就是 STM32 可控制的引脚,STM32 芯片的 GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。STM32芯片的 GPIO被分成很多组,每组有 16个引脚,如型号为 STM32F103ZET6 型号的芯片有 GPIOA、GPIOB、GPIOC 至 GPIOG 共 7 组 GPIO,芯片一共 144 个引脚,其中GPIO就...原创 2018-08-09 17:02:00 · 45239 阅读 · 5 评论 -
starup_stm32f10x_hd.s的作用
对于 103 系列,主要是用其中 3 个启动文件:startup_stm32f10x_ld.s: 适用于小容量 产品startup_stm32f10x_md.s : 适用于中等容量产品startup_stm32f10x_hd.s: 适用于大容量产品这里的容量是指 FLASH 的大小.判断方法如下:小容量:FLASH≤32K中容量:64K≤FLASH≤128K大容量:256K≤...原创 2018-08-26 11:09:52 · 3044 阅读 · 0 评论 -
STM32的SYSTICK 定时器 玩了这么久单片机,这次终于搞懂!有栗子啊
什么是SysTick?这是一个24位的系统节拍定时器system tick timer,SysTick,具有自动重载和溢出中断功能,所有基于Cortex_M3处理器的微控制器都可以由这个定时器获得一定的时间间隔。 SysTick作用在单任务引用程序中,因为其架构就决定了它执行任务的串行性,这就引出一个问题:当某个任务出现问题时,就会牵连到后续的任务,进而导致整个系统崩溃。要解决...转载 2018-08-26 10:08:38 · 25433 阅读 · 6 评论 -
STM32中防止头文件重复包含
在 STM32 标准库的所有头文件以及我们自己编写的“bsp_led.h”头文件中,可看到类似代码清单 12-9 的宏定义。它的功能是防止头文件被重复包含,避免引起编译错误。代码清单 12-9 防止头文件重复包含的宏1 #ifndef __LED_H2 #define __LED_H3 4 /*此处省略头文件的具体内容*/5 6 #endif /* end of __LED_H...原创 2018-08-10 16:45:41 · 2642 阅读 · 1 评论