目录
一、简介
二、最小系统板
三.系统结构
四、命名规则
五、引脚排布、引脚复用
六、程序下载
第一步安装编译软件:
第二部新建工程的步骤:
第三步ST-LINK下载程序:
七、小结
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
内核是ARM Cortex-Mex3
主频为72Hz
RAM:20K(SRAM)
ROM:64K(Flash)
封装:LQFP48
供电:2~3.6V(一般为3.3)
ARM公司在ARM11以后改用Cortex命名,并分成A、R和M三类,M系列有M0、M0+、M3、M4、M7。 Cortex-M3是ARM公司推出的基于ARMv7架构的MCU内核,ST公司在此内核的基础上完成了USART、DMA、GPIO等外围电路的设计。在M系列不同内核开发下的STM32,大致可分成低功耗系列、主流系列、高性能系列3个部分,其具体信息如下图所示:
相同系列的内核一般相同,如F1系列都采用Cortex-M3内核开发,但根据Flash大小不同可将STM32分成小容量产品(<64K)、中等容量产品(介于64K-128K)、大容量产品3个部分,各部分容量产品在使用标准库SPL开发时需要使用不同的启动文件并在预编译处做好修改,其具体信息如下图所示:
F1XX片上资源/外设:
STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:
内核是ARM Cortex-Mex3
主频为72Hz
RAM:20K(SRAM)
ROM:64K(Flash)
封装:LQFP48
供电:2~3.6V(一般为3.3)
ARM公司在ARM11以后改用Cortex命名,并分成A、R和M三类,M系列有M0、M0+、M3、M4、M7。 Cortex-M3是ARM公司推出的基于ARMv7架构的MCU内核,ST公司在此内核的基础上完成了USART、DMA、GPIO等外围电路的设计。在M系列不同内核开发下的STM32,大致可分成低功耗系列、主流系列、高性能系列3个部分,其具体信息如下图所示:
相同系列的内核一般相同,如F1系列都采用Cortex-M3内核开发,但根据Flash大小不同可将STM32分成小容量产品(<64K)、中等容量产品(介于64K-128K)、大容量产品3个部分,各部分容量产品在使用标准库SPL开发时需要使用不同的启动文件并在预编译处做好修改,其具体信息如下图所示:
STM32F103C8T6核心板原理图:
F1XX片上资源/外设:
Cortex-M3是一个 32 位处理器内核,正因如此,STM32才被称作为32-bit微控制器,他拥有32条地址总线,也就是说最大寻址空间为\(2^{32}=2^{2}*2^{30}=4GByte\)。此外,Cortex-M3的寄存器是32 位的,存储器接口也是 32 位的,其详细结构如下图所示:
其实最小系统板就是一个最精简的电路,精简到只能维持MCU的最基本的正常工作。最小系统一般由外部复位电路、外部时钟电路以及MCU本体构成,除此之外没有其他诸如蓝牙、外置EEPROM、时钟芯片DS1302、SPI接口显示屏等外接设备。(注:STM32支持内部时钟和上电复位,但从传统意义上讲最小系统就是由外部复位电路、外部时钟电路以及MCU本体构成。)我在淘宝上买了一块STM32F103C8T6的最小系统板,板子的设计很精致。喏,它长这个样子:
其实淘宝买来的最小系统板和10块钱包邮的那个蓝色最小系统板区别不大,只是将一些引脚引出好插诸如显示屏类的外设。板子设计的很巧妙,所有引脚都引出来了,同时预留四个接口方便接入显示屏等设备,预留了SWD调试接口,可以使用ST-LINK下载程序与仿真。
跟STC89C52RC单片机不一样的是,STM32F103C8T6的GPIO有8种模式,其中包含上拉、下拉输入模式,所以外接按钮时可不设计上下拉电阻。根据他的原理图显示:按键KEY0一端接到3.3V的VCC,一端接到PA0引脚。发光二极管LED0一端也同样经1KΩ电阻接到3.3V的VCC,另一端则接到PC13上。因此,想要让二极管发光的话需要让PC13输出低电平。STM32最大工作电压3.6V,使用了LDO(低压差线性稳压器)将输入电压VIN降到3.3v给微控制器供电。3.3V和GND之间的4个0.1uf的旁路电容(去除高频交流信号)接到了芯片的4个VDD和4个VSS上(WHAT?芯片为啥整四个VDD和四个VSS?我猜应该是增强供电能力,保证供电的可靠性)。
初学的话先简单了解一下,便于以后学习STM32:
从上到下看(想要更多了解的话去手册上看,这里只介绍了一部分)
ICode是指令总线,用来加载程序指令
DCode是数据总线,用来加载数据的
ICode和DCode主要是用来连接Flash的
Flash用于储存我们编写的程序
System是系统总线,连着其他地方,比如SRAM(用于储存程序运行时的变量数据)
ABH系统总线的意思先进高性能总线,用于挂载外设,比如说图中的SDIO、复位和时钟控制。它还连着APB1和APB2,APB的意思是先进外设总线,用于连接外设。由于ABH和APB存在一定差异,所以用两个桥接完成数据的转换和缓存。
DMA用于搬运大量数据,它可以像CPU一样,使用其他外设,但又不需要CPU参与,这是为了省下CPU的时间干别的事。
STM32F103中文手册,单片机命名规则如下图所示:
根据命名规则可知,STM32F103C8T6中的C代表着这款芯片有48个引脚,其引脚排布如下图所示:
(推荐优先使用加粗的地方,没有加粗的,可能需要配置或者有其他功能)
标红色的是与电源有关的
标绿色的是IO口、功能口的引脚
标蓝色的是与最小系统相关的引脚
(S代表电源,I代表输入,O代表输出)
(FT:Five voltage Tolerant,就是5V容忍,没有FT的,就是3.3V)
引脚号说明:
1是备用电源的
2是I/O口或RTC(输出RTC校准时钟或RTC闹钟脉冲或秒脉冲)或侵入检测(就是一个安全保障)
3、4都是I/O口或接32.768KHz的RTC晶振
5、6接系统主晶振
7是系统复位引脚,NRST意思为negative reset,是负极复位
8、9内部模拟部分的电源
10到19、21、22、25到33、41到43、45到46都是I/O口
20是I/O口或BOOT1的引脚
22、23、35、36、47、48是系统的主电源口(VSS是负极,VDD正极)
34、37到40是I/O口或调试端口
44是BOOT0的引脚
1.建立工程文件夹,Keil中新建工程,选择型号。
2.工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹。
3.工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组里。
4.工程选项,C/C++,Include Paths内声明所有包含头文件的文件夹。
5.工程选项,C/C++,Define内定义USE_STDPERIPH_DRIVER。
6.工程选项,Debug,下拉列表选择对应调试器,Settings,Flash Download里勾选Reset and Run 。
使用SWD接口下载只需要连接3.3V(如果烧录程序的板子自带供电的话3.3V引脚也不用连)、GND、SWDIO(PA13)、 SWCLK(PA14)、RST(非必要连线),可以从淘宝购买十几块的ST-LINK下载器(这种U盘形状的其实不是ST公司出品的,但是烧录了他们的固件,也是可以用滴)。使用SWD接口除了可以烧录程序外,还可以实现在线仿真(debug),仿真过程可以监视寄存器等数据,非常适合软件开发(找问题)。值得注意的是,ST-LINK/V2只支持给自家的STM32和STM8烧录程序,不支持为其他公司的单片机烧录程序(即使同样搭载Cortex-M3内核)。
通过了解上面一些基础原理还是不够的,需要后续多做一些实验,把各个模块联合起来使用等等。熟悉IIC,SPI,UART,CAN一些接口,熟练使用C语言编程,熟悉keil5软件。
熟悉MQTT协议,有资源的话再熟悉github仓库提交等。