STM32
JawSoW
雄关漫道真如铁,而今迈步从头越。
展开
-
STM32 外设使用的基本配置顺序
引脚重映射配置过程(串口1为例):1.使能GPIO时钟(重映射后的IO); 使能功能外设时钟(例如串口1); 2.使能AFIO时钟。重映射必须使能AFIO时钟: RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 3.开启重映射。 GPIO_PinRemapConfig(GPIO_Remap_USART1, ENAB...原创 2022-04-25 09:09:57 · 2218 阅读 · 0 评论 -
卡尔曼滤波方式研究
前段时间在论坛里简单地发了一些关于kalman的理解。有很多网友顶贴的,趁着今天休息,整理一下前段时间的工作。有些理解和说法可能不正确,以此抛砖引玉吧。1,在google上搜索卡尔曼滤波,很容易找到以下这个帖子:http://blog.csdn.net/lanbing510/article/details/8828109这里面很简单形象的解释了kalman的作用。但是帖子后半段,将kalman回归...转载 2018-04-08 14:28:19 · 1014 阅读 · 1 评论 -
STM32学习之:内部Flash
在我们应用开发时,经常会有一些程序运行参数需要保存,如一些修正系数。这些数据的特点是:数量少而且不需要经常修改,但又不能定义为常量,因为每台设备可能不一样而且在以后还有修改的可能。将这类数据存在指定的位置,需要修改时直接修改存储位置的数值,需要使用时则直接读取,会是一种方便的做法。考虑到这些数据量比较少,使用专门的存储单元既不经济,也没有必要,而STM32F103内部的Flash容量较大,而且ST...原创 2018-03-04 14:06:57 · 2516 阅读 · 0 评论 -
STM32学习之:SPI读写串行Flash
24.1 SPI协议简介SPI协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设备接口,是一种高速全双工的通信总线。它被广泛地使用在ADC、LCD等设备与MCU间,要求通讯速率较高的场合。学习本章时,可与I2C章节对比阅读,体会两种通讯总线的差异以及EEPROM存储器与FLASH存储器的区别。下面我们分别对SPI协议的物理层及协议层进行讲解。...原创 2018-03-04 13:27:47 · 2481 阅读 · 0 评论 -
牛人总结的单片机应用程序架构
工作中经过摸索实验,总结出单片机大致应用程序的架构有三种:1. 简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。2. 时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。3. 操作系统,此法应该是应用程序编写的最高境界。下面就分别谈谈这三种方法的利弊和适应范围等。一、顺序执行法这种方法,这应用程序比较简单,实时性,并行性要...转载 2018-03-08 17:51:58 · 7273 阅读 · 0 评论 -
STM32学习之:FMC-扩展外部SDRAM
参考资料:《STM32F4xx 参考手册 2》、《STM32F4xx 规格书》、库帮助文档《stm32f4xx_dsp_stdperiph_lib_um.chm》。关于 SDRAM 存储器,请参考前面的“常用存储器介绍”,实验中 SDRAM 芯片的具体参数,请参考其规格书《IS42-45S16400J》来了解。1、 SDRAM 控制原理 STM32 控制器芯片内部有一定大小的 SRAM 及 FL...转载 2018-03-08 10:46:16 · 13503 阅读 · 0 评论 -
STM32学习之:DMA详解
DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。有多少个DMA资源? 有两个DMA控制器,DMA1有7个通道,DMA2有5个通道。数据...转载 2018-03-07 20:59:06 · 2875 阅读 · 0 评论 -
IAR工程中的各个文件的含义
eww、ewp、ewd的意思?为方便大家阅读,本文内容已经整理成PDF文件:http://pan.baidu.com/s/1gfHygynⅠ、写在前面IAR工程中的源代码.c.h文件只有几M大小,为什么打包之后会有几百M大小? 答案:工程中包含了.o、.pbi等不必要的文件。 Ⅱ、看见下图,你可以删除不必要的文件吗? 看过我代码的人,或许都会发现在同工程文件目录下面有一个.bat文件“原创 2018-02-07 11:07:44 · 7890 阅读 · 0 评论 -
STM32F4-DISCO 学习之DMA双缓冲机制
DMA具备双缓冲机制,可以让数据在传输时候不断流,也就是我们所谓的PING-PONG-BUFFER,也就是说有AB两个BUFFER,DMA访问A时候,CPU访问B,DMA访问B时候,CPU访问A.这种实现导致总线矩阵相对复杂,所以,一般低端MCU也不会有这个机制.但是在做这个机制的试验时候,虽然可以做到PING-PONG BUFFER的传输,但是..却有点小意外.其实双缓冲,在配置过程并不难,比如...原创 2018-02-05 21:19:21 · 7580 阅读 · 0 评论 -
STM32学习之:IAR中确认某段代码的执行时间
1.接出来一个I/O口,然后设置反转,用示波器查看反转周期。2.软件仿真时计算两断点CYCLECOUNTER(在CPU registers中)的差值,乘以指令周期(MCLK)便是执行时间。转载 2018-01-12 10:03:16 · 2144 阅读 · 0 评论 -
STM32学习之:keil测量函数运行时间
1. 设置Trace时的工作频率(就是当前的系统时钟,如stm32f103,f107为72MHz,f407为168M,f429为180M):2. 进入调试状态,在一条语句前设置断点执行到此,再执行到另外的语句处,下面的Sec就是执行时间得到adc_init()时间为: T2-T1 单位秒。3. 还有一种办法,更加精转载 2018-01-12 09:45:56 · 8541 阅读 · 0 评论 -
STM32学习之:DMA详解(2)
DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。有多少个DMA资源? 有两个DMA控制器,DMA1有7原创 2018-01-03 09:31:06 · 3066 阅读 · 0 评论 -
STM32学习之:GPIO最简单操作步骤
需用到的".c"库函数为 stm32f10x_gpio.c 和stm32f10x_rcc.c1.启动相应Port x的RCC(复位始终控制)RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx, ENABLE);x可以是A到G , GPIO都由APB2(高速外设)时钟控制2.GPIO初始结构中的三个参数赋值原创 2017-12-19 16:44:16 · 5733 阅读 · 1 评论 -
STM32学习之:外部中断
STM32 GPIO外部中断总结一、STM32中断分组: STM32 的每一个GPIO都能配置成一个外部中断触发源,这点也是 STM32 的强大之处。STM32 通过根据引脚的序号不同将众多中断触发源分成不同的组,比如:PA0,PB0,PC0,PD0,PE0,PF0,PG0为第一组,那么依此类推,我们能得出一共有16 组,STM32 规定,每一组中同时只能有一个中断触发源工作,那么,最多工作的也...转载 2018-03-26 14:36:42 · 889 阅读 · 0 评论 -
芯片产品开发经验记录
一:如果一个芯片上的功能不管怎么配置都不能用,那么可能是有些引脚没有配置正确,引脚的使用一定要注意!!!! ————————来自项目:电能计量、热电偶问题采集开发二:如果你觉得有什么地方可能会出问题,那么那个地方一定会出问题; ...原创 2018-03-26 16:42:43 · 464 阅读 · 0 评论 -
STM32使用内部振荡器及其和外部晶体振荡器的区别
在STM32上如果不使用外部晶振,OSC_IN和OSC_OUT的接法如果使用内部RC振荡器而不使用外部晶振,请按照下面方法处理:1)对于100脚或144脚的产品,OSC_IN应接地,OSC_OUT应悬空。2)对于少于100脚的产品,有2种接法:2.1)OSC_IN和OSC_OUT分别通过10K电阻接地。此方法可提高EMC性能。2.2)分别重映射OSC_IN和OSC_OUT至PD0和PD1,再配置P...转载 2018-04-09 19:28:12 · 6073 阅读 · 0 评论 -
STM32 学习大纲(部分外设实验)
1、按键实验: GPIO_ReadInputDataBit来获取位状态,高电平返回1.低电平返回0;2、GPIO——位带操作:3、启动文件详解: 系统启动流程: 在离开复位状态后,CM3做的第一件事就是读取下列两个32位整数的值。 1、从地址0x00000000 处取出MSP的初始值。 2、从地址0x00000004 处取出PC的初始值————这个值是复位向量,LSB必须是1.然后从这个值所...原创 2018-06-05 15:30:06 · 750 阅读 · 0 评论 -
STM学习之:基础概念
所有芯片的引脚顺序都是逆时针排序的;开发板中把芯片的引脚引出来,连接到各种传感器上,然后在STM32上编程,(实际就是通过程序控制这些引脚输出高电平或者低电平)来控制各种传感器工作;stm32有三种启动方式: 从Flash启动(包括系统存储器), 从内部SRAM启动, 从外部RAM启动, 存储器映射: 连接被控总线的是Flash、Ram和片上外设,这些功能部件共同排列在一个4GB的地址空间内; 寄...原创 2018-05-29 16:08:20 · 2731 阅读 · 0 评论 -
STM32——关于printf重定向到串口的问题
简单地说:想在mdk 中用printf,需要同时重定义fputc函数和避免使用semihosting(半主机模式), 标准库函数的默认输出设备是显示器,要实现在串口或LCD输出,必须重定义标准库函数里调用的与输出设备相关的函数. 例如:printf输出到串口,需要将fputc里面的输出指向串口(重定向),方法如下: #ifdef __GNUC__ /* With GCC/RAISONANCE, s...原创 2018-06-04 15:08:39 · 1448 阅读 · 0 评论 -
jlink烧写Nor Flash时出错正确解决方法:PC of target system has unexpected value after programming
问题出在STM32被锁住了,导致STM32F429芯片的“选项字节”被改写,导致芯片被设置成读写保护,从而无法下载程序。。我是在网上搜了一个hex可执行文件,他是用IAR编译的,芯片型号和我的是一样的。于是我通过Jlink的j-flash arm进行下载,第一次下载成功,然后再次下载就出现了上面锁住的问题。有人说可以用st官方的flash downloader 通过串口下载进行解锁,于是我下载了这...原创 2018-06-04 10:40:32 · 3482 阅读 · 0 评论 -
STM32各种时钟的来源
时钟系统是处理器的核心,所以在学习STM32所有外设之前,认真学习时钟系统是必要的,有助于深入理解STM32。 下面是从网上找的一个STM32时钟框图,比《STM32中文参考手册》里面的是中途看起来清晰一些: 重要的时钟: PLLCLK,SYSCLK,HCKL,PCLK1,PCLK2 之间的关系要弄清楚; 1、HSI:高速内部时钟信号 stm32单片机内带的...转载 2018-05-23 11:57:28 · 4543 阅读 · 0 评论 -
STM32的RTC晶振不起振的原因及解决方法
STM32的RTC晶振经常出现不起振的问题,这已经是“业界共识”了。很多人在各种电子论坛上求助类似于“求高手指点!RTC晶振不起振怎么办”的问题,而其答案基本可以概括为“这次高手帮不了你了” 更有阴谋论者提出让人啼笑皆非的解释——STM32的RTC晶振不起振是ST与晶振厂商串通后故意搞出来的,目的是提高某晶振厂商高端晶振的销量。 最近做的几块板子也用到了STM32的RTC,前后两版一共做了大概...转载 2018-05-23 11:42:02 · 7154 阅读 · 1 评论 -
STM32 内存分布探究
STM32 内存分布探究 本人在运行ucos时遇到一个非常奇怪的问题,运行一段时间后就会莫名进入hardfault函数,导致系统死机。后来根据对堆栈调试,发现每次调用的函数都不一样,甚是费解。通过map文件最后得出结论,原来在系统初始化的时候在flash里面读出了系统配置参数,在系统运行过程中会写flash,而flash定义的地址与程序代码存储的位置发生了重叠,一写数据就擦掉了一些函...转载 2018-05-22 10:34:36 · 771 阅读 · 0 评论 -
STM32三种启动模式
STM32三种启动模式STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的Flash。2)SRAM = 芯片内置的RAM区,就是内存啦。3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM区。在每个STM32的芯片上都有两个管脚BO...原创 2018-05-22 09:41:56 · 1037 阅读 · 0 评论 -
IAR远程Debug是出现:warning:stack pointer is setup to incorrect alignment.
在编译的时候出现的问题,很是有点郁闷!!查阅后,显示如下:background:The STM32 device can be read protected.When that is done will the bytes in the flash memory read out as 0xAA.When the Cortex-M device starts up are the bytes 0x...原创 2018-05-18 15:07:17 · 4291 阅读 · 0 评论 -
使用J-Link Remote Server远程调试电路板
https://www.yiboard.com/thread-663-1-1.html说J-Link自带的一个小软件J-Flash的用法,不知道看到的网友都试过没(建议大家动手实践一下),用J-Link烧写Flash绝对秒杀IAR自带的flashloarder,呵呵,这点你在下载较大的程序时会发现很明显(例如我前面提到的那个Demo,250多KB,没试过的后悔了吧,抓紧试试,实践出真知啊,哈哈)。...原创 2018-05-18 14:37:10 · 1527 阅读 · 0 评论 -
STM32学习之:RAM的分配和占用
一个小的项目,在测试时间和产品量稍微大一些之后,出现了一些莫名其妙的非逻辑错误的Bug(最头疼的是不能每次都能复制出来)。经过修改后,最近一个月的测试都没有出现。本人在这里得到了原子哥和其他朋友的很多帮助,也把自己的一些经验分享给各位,也欢迎大家指正。1. 程序偶尔会出现一些Bug,经过output串口信息发现一些堆栈的临时变量被莫名其妙的修改。stm32103rbt6的内存是20K,算比较小了,...转载 2018-05-04 14:39:28 · 8788 阅读 · 4 评论 -
STM32学习之:STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
我自己依据此图理解,应用思维导图画了一张方便理解:(如果看不清可通过ctrl+鼠标滑轮 放大看;)前提条件1:组别优先顺序(第0组优先级最强,第4组优先级最弱):NVIC_PriorityGroup_0>NVIC_PriorityGroup_1>NVIC_PriorityGroup_2>NVIC_PriorityGroup_3>NVIC_PriorityGroup_...原创 2018-04-26 10:09:34 · 732 阅读 · 0 评论 -
STM32学习之:STM32F4XX的三大主体部分
三大模块:电源、IO口、时钟。一、 首先,我们来看一下电源,下面是电源框图从上面我们可以看出,电源给内部的三大关键部分供电,一是给ADC供电,这块无需多说,二是电池备份域,VBAT引脚可以连接到一个可选的待机电压由电池供电或由另一个来源,当V DD是断开时保留的备份寄存器的内容和供给的RTC。还一部分主要用来给数字逻辑部分供电,像唤醒逻辑、看门狗、IO等,给内核、内存和数字外设的供...原创 2018-04-09 19:52:56 · 776 阅读 · 0 评论 -
IAR调试QA——单步调试、断点调试、全速运行时数据不一致
问题:单步调试、断点调试、全速运行时数据不一致;解决方法:在代码的适当位置添加延时;原创 2017-12-26 11:20:15 · 3182 阅读 · 0 评论 -
IAR单步调试
首先进行配置,在Driver下拉列表中选择合适的驱动,其中Simulator是纯软件仿真驱动,适合与应用程序前期简单逻辑货一般运算程序调试。其他均为硬件仿真驱动,需要相应的硬件配合。Go:全速运行Break:终止运行Reset:复位Stop Debugging:退出调试器Step Over:单步执行一条C语句或汇编指令,不跟踪进入C函数或者汇编语言子程序St原创 2017-12-25 15:39:33 · 8283 阅读 · 0 评论 -
ARM中的AHB、APB总线
APB(Advanced Peripheral Bus),片上外设总线。主要用于慢速片上外设与ARM核的通讯。AHB(Advanced High performance Bus),高性能总线。主要用于系统高性能、高时钟速率模块间通信。原创 2017-11-28 09:40:24 · 1491 阅读 · 0 评论 -
STM32--DMA详解
DMA部分我用到的相对简单,当然,可能这是新东西,我暂时还用不到它的复杂功能吧。下面用问答的形式表达我的思路。DMA有什么用? 直接存储器存取用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU的干预,通过DMA数据可以快速地移动。这就节省了CPU的资源来做其他操作。有多少个DMA资源? 有两个DMA控制器,DMA1有7个通道,DMA2原创 2017-08-30 16:53:48 · 1196 阅读 · 0 评论 -
STM32学习笔记:PWM
a) 目的:基础PWM输出,以及中断配合应用。输出选用PB1,配置为TIM3_CH4,是目标板的LED6控制脚。b) 对于简单的PWM输出应用,暂时无需考虑TIM1的高级功能之区别。c) 初始化函数定义:void TIM_Configuration(void); //定义TIM初始化函数d) 初始化函数调用:TIM_Co转载 2017-09-08 10:33:31 · 586 阅读 · 0 评论 -
STM32学习笔记:系统的时钟
开始研究代码int main(void){Init_All_Periph();......看到这一行,开始跟踪,于是又看到了下面的内容void Init_All_Periph(void){RCC_Configuration();......继续跟踪void RCC_Configuration(void){SystemInit();......转载 2017-09-07 12:00:41 · 1300 阅读 · 0 评论 -
STM32之NVIC的深入详解
朋友们,如果你需要在STM32上移植RTOS,那么首先必须深入理解它的中断系统。什么是NVIC?即嵌套向量中断控制器(Nested Vectored Interrupt Controller)。STM32的中有一个强大而方便的NVIC,它是属于Cortex内核的器件,不可屏蔽中断 (NMI)和外部中断都由它来处理,而SYSTICK不是由 NVIC来控制的。特性:● 60个可屏转载 2017-09-07 15:12:52 · 1235 阅读 · 0 评论 -
STM32学习笔记:实验
0. 注意:新建STM32工程时,添加STM32F10X_HD宏和设置头文件路径十分重要,弄不好久编译不了。有时头文件前需要打两点,有时一次设置路径不会成功,需多次设置。我就被这个困扰了好久。1. USART1通用同步异步收发器:编程:1.初始化串口,因为串口也要用IO口进行收发数据,所以初始化串口时要申明两个结构化类型参数( GPIO_InitTypeDef GPIO_转载 2017-09-07 11:23:29 · 697 阅读 · 0 评论 -
STM32 学习笔记:TIME定时器详解
STM32 单片机的定时器的确很强大,参考说明书中就占了一百多页,占参考手册1/4 有多了。STM32的定时器分了好几个类别,各个类别针对功能作用都不大相同。分有: 一、高级定时器 二、通用定时器 三、基本定时器 四、看门狗定时器 五、SysTick定时器 其中看门狗定时器和SysTick定时器本篇笔记阐述,转载 2017-09-07 11:20:40 · 6748 阅读 · 1 评论 -
STM32学习笔记:RTC
既然我们要使用RTC就要先对它有个大致的了解,知己知彼才能百战不殆嘛!STM32内部RTC功能非常实用,它的供电和时钟是独立于内核的,可以说是STM32内部独立的外设模块,有加上RTC内部寄存器不受系统复位掉电的影响,我们可以才用外部电池供电和32768表振晶体来实现真正RTC(实时时钟)功能。的这里引用手册里一段概述“RTC由两个主要部分组成。第一部分(APB1接口)用来和 APB1总线相连。此转载 2017-09-07 11:19:53 · 876 阅读 · 0 评论 -
STM32学习笔记3:时钟系统
时钟系统结构大致如下图: 1.时钟树详解 先看上半部分。 从上往下有: 1. 独立看门狗时钟由LSI即低速内部时钟(RC时钟)产生,大致为32kHz,由于是RC电路产生,故时钟不稳定 2. RTC可以选择上面的LSI时钟产生,也可以由低速外部时钟(LSE)产生,大小为32.768khz,具有功耗低,精度高特点 3. MCO1/2是时钟输出管脚,每个管脚可以输出转载 2017-09-07 11:14:58 · 1007 阅读 · 0 评论