STM32
高原@
从事于物联网行业智能硬件开发的程序员
展开
-
STM32再学习――启动流程分析
我们写嵌入式程序,基本上采用C语言来编写,以main( )作为程序的入口。但实际上,mian()并不是最先要执行的,在这之前需要做一些基本的工作,如堆、栈的定义;main函数的复位连接等,这些工作就需要一个专门的启动程序来完成,由于需要做的工作内容不多,并且需要更直接的管理内存,一般采用汇编编写。本文引用地址:http://www.eepw.com.cn/article/236700.htm转载 2016-08-13 19:22:02 · 483 阅读 · 0 评论 -
KEIL MDK编译代码,产生的几个关键信息:Code RO-data RW-data ZI-data
KEIL RVMDK编译后的信息 Program Size: Code=86496 RO-data=9064 RW-data=1452 ZI-data=16116 Code是代码占用的空间,RO-data是 Read Only 只读常量的大小,如const型,RW-data是(Read Write) 初始化了的可读写变量的大小,ZI-data是(Zero Initialize)转载 2016-12-15 20:45:01 · 939 阅读 · 0 评论 -
STM32 大小端模式 与 堆栈及其增长方向分析
栈增长和大端/小端问题是和CPU相关的两个问题.1,首先来看:栈(STACK)的问题.函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f10x_hd.s里面,开头就有:Stack_Size EQU 0x00000800表示转载 2016-11-02 10:10:45 · 853 阅读 · 0 评论 -
STM32内存管理以及堆和栈的理解
今天仔细读了一下内存管理的代码,然后还有看了堆栈的相关知识,把以前不太明白的一些东西想通了,写下来,方便以后查看,也想大家看了能指出哪里不对,然后修改。 首先,先看一下stm32的存储器结构。Flash,SRAM寄存器和输入输出端口被组织在同一个4GB的线性地址空间内。可访问的存储器空间被分成8个主要块,每个块为512MB。FLASH存储转载 2016-11-02 09:38:59 · 26672 阅读 · 2 评论 -
关于STM32能否使用malloc申请动态内存的问题
首先,malloc( )属于标准C语言函数,当然可以在单片机上使用,如STM32可以先在启动文件中设置heap的大小,再使用动态内存分配: Heap_Size EQU 0x00000200 \\也就是 512字节;但是一般单片机的内存都比较小,而且没有MMU,malloc 与free的使用容易造成内存碎片。因此应该慎用,或者自己实现内存管理。以下原创 2016-11-02 09:10:52 · 35469 阅读 · 1 评论 -
STM32串口通信校验问题
这里以串口作为传输媒介,介绍下怎样来发送接收一个完整的数据包。过程涉及到封包与解包。设计一个良好的包传输机制很有利于数据传输的稳定性以及正确性。串口只是一种传输媒介,这种包机制同时也可以用于SPI,I2C的总线下的数据传输。在单片机通信系统(多机通信以及PC与单片机通信)中,是很常见的问题。一、根据帧头帧尾或者帧长检测一个数据帧1、帧头+数据+校验+帧尾这是一个典型的方案,但是对帧头与转载 2016-11-01 16:29:38 · 6311 阅读 · 1 评论 -
STM32时钟小结
众所周知STM32有5个时钟源HSI、HSE、LSI、LSE、PLL,其实他只有四个,因为从上图中可以看到PLL都是由HSI或HSE提供的。其中,高速时钟(HSE和HSI)提供给芯片主体的主时钟.低速时钟(LSE和LSI)只是提供给芯片中的RTC(实时时钟)及独立看门狗使用,图中可以看出高速时钟也可以提供给RTC。内部时钟是在芯片内部RC振荡器产生的,起振较快,所以时钟在芯片刚上电的时候,默认转载 2016-10-30 16:38:14 · 526 阅读 · 0 评论 -
stm32系列MCU芯片选型表
本文为stm32系列32位微控制器选型表,包括STM32F0系列、STM32L1系列、STM32F1系列、STM32F2系列、STM32F3系列、STM32F4系列选型,STM32系列36脚、48脚、64脚、100脚、144脚选型。TM32系列36脚、48脚、64脚、100脚、144脚选型:STM32系列按内核架构分类产品选型:STM32F0 系列STM32L1 系转载 2016-10-17 13:29:08 · 31486 阅读 · 0 评论 -
STM32的存储器映射
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。 Cortex-M3支持4GB的存储空间,它的存储系统采用统一编址的方式; 程序存储器、数据存储器、寄存器被组织在4GB的线性地址空间内,以小端格式(lit转载 2016-10-16 21:45:26 · 642 阅读 · 0 评论 -
STM32 ADC 转换时间
本文转载自 http://www.cnblogs.com/LJWJL/p/4593246.htmlADC时钟:这个ADC时钟是从哪来的呢。我们看下面这个STM32的时钟结构图: 我们大多使用STM32的最快PCLK2系统时钟72MHz。ADCCLK的时钟由72MHz的6分频能瞒住14MHz以下的要求 为12MHz。RCC_ADCCLKConfig(RCC_PCLK转载 2016-10-25 11:04:56 · 4950 阅读 · 0 评论 -
STM32通过DMA方式采集多路AD
一个项目需求:使用STM32采集多路AD信号。一般采集多路信号需要使用DMA方式,步骤如下:1.使能相应ADC通道,这里使用ADC1的4个通道,分别是ADC123_IN0 ~ ADC123_IN3,注:ADC123_IN0 表示ADC1, 2, 3 都可以使用该通道。2.配置ADC,将ADC设为多通道循环扫描模式,设置各通道扫描顺序(人为设定)3.配置DMA通道关键原创 2016-10-25 10:46:43 · 14944 阅读 · 5 评论 -
STM32什么时候使用AFIO?
什么时候要开启AFIO呢?参考手册:说的很明白,操作AFIO的三类寄存器时需要开启:AFIO_EVCRAFIO_MAPRAFIO_EXTICRx这三类其实是AFIO的全部寄存器,AFIO_EVCR是事件相关的,AFIO_MAPR是与重映射相关的,AFIO_EXTICRx是与外部中断相关的。因此管脚重映射、外部中断、事件时开启AFIO。转载 2016-10-25 08:35:36 · 1341 阅读 · 0 评论 -
can总线
CAN基础can总线协议概述: CAN是Controller Area Network的缩写,由德国博世公司开发;CAN通过ISO11891以及ISO11519进行了标准化; CAN总线的特点: 1、多主控制 在总线空闲时,所有单元都可以开始发送消息(多主控制); 最先访问总线的单元获得发送权(辨别方式:“CSMA/转载 2016-10-25 00:05:07 · 1302 阅读 · 0 评论 -
关于STM32的BOOT0和BOOT1
STM32一共有三种启动模式,在ST官网上下载的RM0008中,可找到启动相关的配置说明:翻译为中文:STM32三种启动模式对应的存储介质均是芯片内置的,它们是:1)用户闪存 = 芯片内置的Flash。2)SRAM = 芯片内置的RAM区,就是内存啦。3)系统存储器 = 芯片内部一块特定的区域,芯片出厂时在这个区域预置了一段Boo原创 2016-10-13 20:03:56 · 108276 阅读 · 7 评论 -
使用STM32的串口进行大量数据传输
最近的一个项目需要用单片机和上位机进行大量数据的传输,每次传输的内容为一个1000*7的矩阵,矩阵中的每个元素都是一个4位有效数字,通过字符的形式保存,(如:1.000占5个字节)简单计算一下,1000*7*5=35000Byte,也就是30几K,而单片机型号为:STM32F103ZET6, SRAM有64K 。如果直接申请一个数组来保存,占用空间太大,但是又不适合用C标准库中的malloc 进行原创 2016-11-02 21:51:58 · 27760 阅读 · 7 评论 -
STM32的内部Flash
说到STM32的FLSAH,我们的第一反应是用来装程序的,实际上,STM32的片内FLASH不仅用来装程序,还用来装芯片配置、芯片ID、自举程序等等。当然, FLASH还可以用来装数据。 自己收集了一些资料,现将这些资料总结了一下,不想看的可以直接调到后面看怎么操作就可以了。FLASH分类 根据用途,STM32片内的FLASH分成两部分:主存储块、信息块。 主存转载 2016-10-21 12:39:09 · 1103 阅读 · 0 评论 -
关于STM32的几种输入模式以及外部中断的配置
最近做毕业设计,需要用按键来触发外部中断。实验的时候是正常的,但是换了个核心板以及用上自己做的PCB电路板后,出现了一些问题。问题如下:要求:将连接按键的IO口配置为上拉输入,按键一端接IO口,一端接地,即当按键按下后,该IO口会产生一个下降沿,触发下降沿中断。问题:将相应的IO口配置好后,测了引脚的的电压,并不是3.3V左右,而是0.1V左右。于是猜想:1. 外围电路对IO口产生了影原创 2016-12-17 21:07:56 · 11908 阅读 · 0 评论