历史上的今天
今天是:2024年09月17日(星期二)
2021年09月17日 | KST-STM32学习之基础知识
2021-09-17 来源:eefocus
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所设置的优先级均属于抢占优先级,默认的便是响应优先级!
史海拾趣
|
锐迪科COM RF收发器实现了射频前端、VCO、环路滤波器等敏感器件的片内集成 新一代无线通信产品的设计越来越复杂,功能也日益强大。作为通信芯片的重要组成部分,高集成度的射频(RF)收发器对于实现多功能、高性能的产品设计至关重要。锐迪科电子有限公司通过采用低成本的CMOS工艺技术,已成功开发出可集成射频前端、VCO、环 ...… 查看全部问答> |
|
飞思卡尔09年最新的消费电子方面的资料打包下载,都是pdf文档,主要是关于飞思卡尔的一些产品在消费电子领域的应用以及技术的解决方案。好资料,需要的网友赶快下啦! … 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 08:54 编辑 在电子设备中经常用到稳定性好、精度高、输出可预置的直流电流源。本文设计的数控直流电流源能够很好地降低因元器件老化、温漂等原因造成的输出误差,输出电流在20mA~2000mA可调,输出电流可预置、 ...… 查看全部问答> |
|
;**************************************************** ;Copy and paste RW data/zero initialized data * ;************************************************ ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:18 编辑 现在正在学习XMC1300,但是用英飞凌官方的编译器时,遇到了一点问题,想求大神给解决一下 … 查看全部问答> |
|
我用透传模式把蓝牙模块和手机蓝牙调通了。 这个蓝牙模块设置好透传模式以后,重新上电后生效。 我想把透传模式改回AT模式,设置好AT模式,重启以后,发现还是 处于透传模式。 是不是这样,两个蓝牙设备配对成功后,就一直处于透传模式? 回不 ...… 查看全部问答> |
|
【LPC54100】LPC54102 M0+包裹已被M4签收! 【LPC54100】LPC54102 M0+包裹已被M4签收! 目的: M0+核间歇性的读取温度,和角度值 ,打包快递(中断)给M4,M4拿过来进行计算! 占用硬件资源 MAILBOX 一、初始化 my ...… 查看全部问答> |




