KST-STM32学习之基础知识

发布者:梦回归处最新更新时间:2021-09-17 来源: eefocus关键字:KST-STM32  基础知识 手机看文章 扫描二维码
随时随地手机看文章

STM32上电复位时I/O口为高阻状态,复位结束后,GPIO端口引脚默认为浮空输入。


###1、三大资源


单片机用户来讲,单片机提供给的三大资源分别是程序存储空间、数据存储空间、特殊功能寄存器


###2、STM32F103ZE 介绍


512K 字节的 FLASH(程序存储空间)

64K 字节的静态 SRAM(数据存储空间)

大量的特殊功能寄存器提供给用户来实现其功能。

STM32F103ZE 共 144 个引脚

3.3V供电,注意与51的5V供电区分!

###3、工作的最小系统

同51单片机类似,STM32仍需要单片机工作的最小系统,即:电源、晶振、复位。


电源电路


STM32多电源供电,一个VDD引脚附近必然有一个VSS。同时需要注意,成对的VDD和VSS之间必须加上去耦电容,以保证实现EMC。

STM32多电源供电的好处如下:

内部的功能模块多,芯片内部走线很细,单电源不足以提供足够的电流,需要多个电源并联供电,给他提供足够的电流支撑单片机的正常工作。

模块在单片机内部分布分散,模块独立供电更有利于保持电源的稳定性,保证模块的正常工作。

晶振电路


虽然只有8M晶振,但是可通过PLL倍频,最高可达到72M。


复位电路


低电平复位

###4、 启动文件


该文件负责执行微控制器从“复位”到“开始执行 main 函数”中间这段时间(称为启动过程)所必须进行的工作。


###5、STM32较51的寄存器操作


由于 51 单片机内部结构的特殊性,RAM 地址和寄存器地址有重复的区间,所以映射寄存器用的是sfr这个关键字,不能对寄存器地址直接操作。


比如sfr P0=0x80; P0=0x01;表达的意思是将 0x01 赋值给 0x80 这个地址对应的寄存器。


###6、GPIO了解


STM32F103ZE 的 IO 口多达 112 个

分为A~G七组,每个组又有 16个 IO口!

###7、GPIO的配置


配置端口时钟 -> 配置端口模式 -> 配置输出数据


配置端口时钟,需要先找到GPIO对应的总线,&F1系列&的GPIO 外设是挂在 APB2 总线上的,查找APB2对应的基地址,然后再找到GPIOX对应的偏移地址即可实现开启时钟。


配置端口模式之前,需要先知道STM32的IO模式,一共有8种。分别是浮空输入、上拉输入、下拉输入、模拟输入、开漏输出、推挽输出、推挽式复用功能、开漏复用功能。具体深入,可看这里。<传送门>


输出模式的配置: CNF1 和 CNF0 两位用来表示模式,MODE1 和 MODE0 用来表示输出速率。

这里写图片描述

注意了,模式寄存器有高低之分,高寄存器控制同一端口下的8~15这8个IO,而低寄存器控制同一端口下的0~7这8个IO!


还有需要注意的是,模式寄存器的复位值是 0x44444444。


配置数据输出模式,


输出数据寄存器的 16~31 位被保留了,也就是没有使用。因此余下的0~15 位这 16 个数据位分别对应 GPIO 端口的

16 个 IO 口。对数据位置‘1’为输出高电平,清‘0’为输出低电平。


寄存器操作,实现LED闪烁的程序。


int main(void)

{

int i;

*(unsigned int *)0x40021018 |= (1<<8); //配置 APB2 外设时钟使能寄存器,使能 GPIOG 时钟

*(unsigned int *)0x40012000 |= (1<<28); //配置 PG7 为通用推挽输出,速率 10MHz

*(unsigned int *)0x4001200C |= (1<<7); //配置 PG7 输出高电平,初始时为熄灭

while(1)

{

*(unsigned int *)0x4001200C &= ~(1<<7); //配置 PG7 输出低电平,点亮 LED

for (i=0; i<500000; i++); //延时一段时间

*(unsigned int *)0x4001200C |= (1<<7); //配置 PG7 输出高电平,熄灭 LED

for (i=0; i<500000; i++); //延时一段时间

}

}


STM32F1系列的GPIO是挂载到APB2上面的。《STM32F103 数据手册》的P12

这里写图片描述

而F2系列,是挂载到APB1上面的。。。

这里写图片描述

###8、外设接口

STM32 的外设接口主要分布在片上外设分区,比如 GPIO ,USART、SPI、I2C 等。


外设的从属关系,可通过下图直观了解。

这里写图片描述

###9、总线的概念


总线是芯片各种功能部件之间传送信息的公共通信干线。


同时总线又可分为AHB和APB,AHB可以理解为高速公路,而APB则可以理解为城市外环公路。


AHB - 高级高性能总线,用于高性能模块之间进行高速通信的连接。

APB - 外围总线,外设接口就是挂载到 APB 总线上的。


###10、GPIO端口寄存器的结构


这里写图片描述

###11、当GPIO为输入模式无需配置GPIO_Speed


可参考这篇博文<传送门>。


所以我们写按键的相关驱动程序,进行KeyInit的时候,是没有必要设置Speed的!


###与51的不一样


1、main函数不再是void,而是int。


2、unsingned int 再keil C51中是2个字节,而再keil MDK中是4个字节


3、供电51是5V,而STM32是3V3


4、51所设置的优先级均属于抢占优先级,默认的便是响应优先级!

关键字:KST-STM32  基础知识 引用地址:KST-STM32学习之基础知识

上一篇:KST-STM32学习之数码管扫描中的一个寄存器操作疑问
下一篇:KST-STM32学习之W25Q128

推荐阅读最新更新时间:2024-11-10 10:45

IGBT基础知识梳理
  有关IGBT你了解多少, IGBT (Insulated Gate Bipolar Transistor),绝缘栅双极型晶体管,是由BJT(双极型三极管)和MOS(绝缘栅型场效应管)组成的复合全控型电压驱动式功率半导体器件, 兼有MOSFET的高输入阻抗和GTR的低导通压降两方面的优点。GTR饱和压降低,载流密度大,但驱动电流较大;MOSFET驱动功率很小,开关速度快,但导通压降大,载流密度小。IGBT综合了以上两种器件的优点,驱动功率小而饱和压降低。非常适合应用于直流电压为600V及以上的变流系统如交流电机、变频器、开关电源、照明电路、牵引传动等领域。   结构   IGBT结构图左边所示为一个N沟道增强型绝缘栅
[电源管理]
IGBT<font color='red'>基础知识</font>梳理
KST-STM32学习之基础知识
STM32上电复位时I/O口为高阻状态,复位结束后,GPIO端口引脚默认为浮空输入。 ###1、三大资源 单片机用户来讲,单片机提供给的三大资源分别是程序存储空间、数据存储空间、特殊功能寄存器。 ###2、STM32F103ZE 介绍 512K 字节的 FLASH(程序存储空间) 64K 字节的静态 SRAM(数据存储空间) 大量的特殊功能寄存器提供给用户来实现其功能。 STM32F103ZE 共 144 个引脚 3.3V供电,注意与51的5V供电区分! ###3、工作的最小系统 同51单片机类似,STM32仍需要单片机工作的最小系统,即:电源、晶振、复位。 电源电路 STM32多电源供电,一个VDD引脚附
[单片机]
<font color='red'>KST-STM32</font>学习之<font color='red'>基础知识</font>
DAC基础知识:静态技术规格
  所有DAC之间的共性就是技术规格的定义以及说明。这篇文章将会论述静态DAC技术规格。静态DAC技术规格包括对DAC在DC域中所具有的特性的描述。在DC域中时,DAC的数字与模拟定时现象不属于这一组技术规格。   图1      虽然这3个DAC拓扑互不相同,但它们的技术规格与电气描述非常类似。   一个主要的静态DAC技术规格就是理想转换函数(图2)。在对这个普通转换函数的图示中,可以轻松地体会和理解零代码、偏移、满量程以及增益的定义。一旦你理解了上述概念,差分非线性 (DNL),积分非线性 (INL)以及单调性技术规格也就再次成为理想转换函数的另一个导函数。   图2      理想DAC转换函数   图2
[模拟电子]
DAC<font color='red'>基础知识</font>:静态技术规格
PIC单片机基础知识之一
PIC16中档单片机的基本架构 PIC16中档系列单片机是精简指令集的单片机,它具有以下特性: 内部为哈佛结构 指令流水线操作 文档寄存器的概念 单指令周期 所有指令为单字指令 长字指令 指令数很少 指令实现的功能基本不重复 接下来分别介绍上面各个特性。 1)哈佛结构-介绍哈佛结构通常要和冯.纽曼结构对比来介绍。我们熟悉的8086就是一种典型的冯.纽曼结构,它的程序和数据是共用同一个存储空间,CPU也是使用同一个总线来访问它们。那么,取指令和取数据势必分时来进行,这就限制了数据的流量。和它相对应的哈佛结构,则是不同。哈佛结构的典型特点就是程序和数据是分立的空间,CPU对程序和数据的访问也是使用完全独立的两套总线。所
[单片机]
TQ2440 学习笔记—— 11、嵌入式编程基础知识【arm-linux-objcopy、objdump选项】
1、arm-linux-objcopy 选项 arm-linux-objcopy 被用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。 常用arm-linux-objcopy 来将ELF格式的可执行文件转换为二进制文件。 arm-linux-objcopy 的使用格式如下: 2、arm-linux-objdump 选项 arm-linux-objdump 用于显示二进制文件信息,常用来查看反汇编代码 使用格式如下:
[单片机]
TQ2440 学习笔记—— 11、嵌入式编程<font color='red'>基础知识</font>【arm-linux-objcopy、objdump选项】
ARM的JTAG接口基础知识
  一、JTAG的基本知识   JTAG是Joint Test Action Group的缩写,是IEEE 1149.1标准。使用JTAG的优点:JTAG的建立使得集成电路固定在PCB上,只通过边界扫描便可以被测试。在ARM7TDMI处理器中,可以通过JTAG直接控制ARM的内部总线、I/O口等信息,从而达到调试的目的。   二、ARM的JTAG调试结构   (1)Debug主控(Host)通常是运行有ARM公司或者第三方提供的调试软件的PC机,常用的调试软件有ARMSDT中的ARM Debug for Windows(ADW)、Linux下的arm-elf-gdb等。通过这些调试软件,可以发送高级的ARM调试命令,如设置断点
[单片机]
IAR的MSP430 C编程基础知识
通常我们开发单片机程序都是使用C语言的,为什么C语言比汇编方便呢?原因就是C编译器在为我们做着大量的琐碎的组织翻译工作。在此感谢IAR,辛辛苦苦的劳动着,却没有辛苦钱! 好,我们从新建一个工程开始,打开IAR,空白,project,create new project,C,main,确定。给工程起个名字,保存。OK,工程建立完毕了。这时工程里已经有个main.c了,并且有一个完整的程序,如下: #include io430.h int main( void ) { // Stop watchdog timer to prevent time out reset WDTCTL = WDTPW + WDTHOLD;
[单片机]
51单片机定时器/计数器基础知识介绍
一、基本概念 1、89C51有两个计数器T0和T1,89C52还有一个T2。每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535。 2、提供给定时器的计数源又是从哪里来的呢?就是由单片机的晶振经过12 分频后获得的一个脉冲源。一个12M 的晶振,它提供给计数器的脉冲时间间隔是就是1us。 3、预置数计数法。如果每个脉冲是1微秒,则计满65536个脉冲需时65.536毫秒。但是如果只需要10毫秒就可以了,怎么办?只要在计数器里预先放进55536,这样只需要计数65536-55536=10000次,也就是10毫秒了。 二、相关寄存器 特殊功能寄存
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved