单片机简介「建议收藏」腾讯云开发者社区

大家好,又见面了,我是你们的朋友全栈君。

STM32F103C8T6是一款由意法半导体公司(ST)推出的基于Cortex-M3内核的32位微控制器,硬件采用LQFP48封装,属于ST公司微控制器中的STM32系列。除了被我们熟知的STM32,ST公司还有SPC5X系列、STM8系列等,具体参数如下:

内核

Cortex-M3

Flash

64K x 8bit

SRAM

20K x 8bit

GPIO

37个GPIO,分别为PA0-PA15、PB0-PB15、PC13-PC15、PD0-PD1

ADC

2个12bit ADC合计12路通道,外部通道:PA0到PA7+PB0到PB1,内部通道:温度传感器通道ADC_Channel_16和内部参考电压通道ADC_Channel_17

Timers

4个16bit定时器/计数器,分别为TIM1、TIM2、TIM3、TIM4TM1带死区插入,常用于产生PWM控制电机

2个看门狗定时器(独立看门狗IWDG、窗口看门狗WWDG)

1个24bit向下计数的滴答定时器systick

工作电压、温度

2V~3.6V、-40°C ~ 85°C

通信串口

2*IIC,2*SPI,3*USART,1*CAN

系统时钟

内部8MHz时钟HSI最高可倍频到64MHz,外部8MHz时钟HSE最高可倍频到72MHz

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整个系统结构可以分为由ARM公司设计的Cortex-M3内核和ST公司在此基础上优化的总线矩阵、DMA(Direct Memory Access,直接内存读取)、AHB、APB1以及APB2上挂载的外设等两个部分,详细结构如下图所示:

Cortex-M3摒弃了冯·诺依曼结构(普林斯顿结构),采用了将指令存储和数据存储分开的的哈佛结构(Harvard Architecture),这样一来Cortex-M3同时拥有了独立的32-bit指令总线和32-bit数据总线,数据访问将不再占用指令总线,同时读取指令和数据后提升了MCU运行速度。冯诺依曼和哈弗结构的宏观对比如下图所示:

Cortex-M3是一个 32 位处理器内核,正因如此,STM32才被称作为32-bit微控制器,他拥有32条地址总线,也就是说最大寻址空间为

。此外,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?我猜应该是增强供电能力,保证供电的可靠性)。

我在网上找到了STM32F103中文手册,单片机命名原理如下图所示:

根据命名规则可知,STM32F103C8T6中的C代表着这款芯片有48个引脚,其引脚排布如下图所示:

STM32微控制器有着丰富的功能,仅靠48个引脚是不够分配所有功能的,所以有的引脚可以实现好几种功能,这就叫引脚复用。一般而言,大部分引脚的第一功能是GPIO(通用输入输出口)。但值得注意的是:PA13、PA14、P15、PB3、PB4、PC14、PC15、PD0、PD1的默认功能并不是GPIO,使用时需要开启AFIO时钟,注意一下这一点。B站某UP制作了一个直观的图片,如下图所示:

官方手册提供的STM32F103系列微控制器引脚的默认功能如下图所示:

STM32单片机支持3种程序下载方式,根据原理不同可分为ISP串口下载(使用USB-TTL接PA9、PA10)、SWD下载(使用ST-LINK接PA13、PA14)、JTAG下载(使用JLINK接PA13、PA14、PA15、PB3、PB4)。

ISP的全程是In-System Programming,在线系统编程的意思。STM32单片机一般可通过UART1引脚进行程序烧录,烧录的时候需要配合BOOT0、BOOT1接地与否来实现。BOOT0、BOOT1可以组合出四种状态,不同位置的含义如下图所示,其中X是无关项。

使用ISP串口下载前,将单片机上电之前需要先用跳线帽把BOOT0短接到1的位置,BOOT1短接到0的位置,即系统存储器模式,然后才能通过串口下载程序。ISP串口下载完成后断电,在单片机上电之前需要先用跳线帽把BOOT0短接到0的位置,即主闪存存储器模式。

由于单片机使用的TTL电平通信协议,与电脑的USB口进行串口通信时需要使用转串口芯片,常见的有CH340系列(如CH340N)、FT232、PL2303等等,下图以CH340T为例。

下载器GND与单片机GND相连(连一个就行),下载器3.3V与单片机3.3V相连(或者下载器5V与单片机VIN相连)、下载器RXD与单片机PA9(U1TX)相连,下载器TXD与单片机PA10(U1RX)相连。

Flash Loader Demonstrator

使用SWD接口下载只需要连接3.3V(如果烧录程序的板子自带供电的话3.3V引脚也不用连)、GND、SWDIO(PA13)、 SWCLK(PA14)、RST(非必要连线),可以从淘宝购买十几块的ST-LINK下载器(这种U盘形状的其实不是ST公司出品的,但是烧录了他们的固件,也是可以用滴)。使用SWD接口除了可以烧录程序外,还可以实现在线仿真(debug),仿真过程可以监视寄存器等数据,非常适合软件开发(找问题)。值得注意的是,ST-LINK/V2只支持给自家的STM32和STM8烧录程序,不支持为其他公司的单片机烧录程序(即使同样搭载Cortex-M3内核)。

ST-LINK/V2

JTAG接口需要使用TMS(模式选择)、TCK(时钟)、TDI(数据输入)、TDO(数据输出)、nTRST(复位,非必要),对应到STM32F103C8T6上就是PA13(TMS)、PA14(TCK)、PA15(TDI)、PB3(TDO)、PB4(nTRST)引脚,这些引脚第一功能就是JTAG接口,这就是上面所说的为什么这些引脚不能简单的当GPIO用。采用JTAG下载时可以使用J-LINK下载器(正版SEGGER的J-LINK价格比较昂贵,国内仿制的建议买V9版本以上),也可以使用ST公司原厂或国内仿制的带JTAG接口的ST-LINK/V2(如正点原子推出的,不过还是好贵,呜呜呜)。不过JTAG能实现的功能SWD一般也能实现,我比较懒,一般不使用这种下载接口。

J-LINK

ST-LINK/V2

如果我们不需要使用JTAG下载,但GPIO资源紧张或PCB设计时已经使用了这些第一功能为JTAG的引脚,那么我们就需要关闭JTAG。比如说我要使用GPIOA15作为GPIO口,那么代码层面需要这样实现:

RTT的全称是Real Time Transfer,翻译过来就是实时传输。为什么给大家介绍这个呢,上面有讲到J-LINK、ST-LINK等可以下载程序,也可以在线仿真。那么问题来了,他们直接支持串口通信嘛?答案是不可以!!!不过别慌,针对这个问题SEGGER公司推出了共享内存技术,这个功能可以省去外接使用USART进行串口数据测试,灰常方便。不过由于RTT是SEGGER公司推出的,所以这个是需要使用J-LINK V8版本及以上的调试器的,如果不差钱的话,可以优先考虑J-LINK。RTT支持所有搭载ARM Cortex-M0/M0+/M1/M3/M4/M7/M23/M33内核的MCU,不局限于STM32。

SEGGER官网

导入源代码后可以在程序中使用以下函数,这些函数根据描述看很容易知道他的作用:

函数名

描述

SEGGER_RTT_Read()

Read data from an input buffer.

SEGGER_RTT_Write()

Write data to an output buffer.

SEGGER_RTT_WriteString()

Write a zero-terminated string to an output buffer.

SEGGER_RTT_printf()

Write a formatted string to an output buffer.

SEGGER_RTT_GetKey()

Get one character from input buffer 0.

SEGGER_RTT_HasKey()

Check if a character is available in input buffer 0.

SEGGER_RTT_WaitKey()

Wait for a character to be available in input buffer 0 and get it.

SEGGER_RTT_ConfigUpBuffer()

Configure an up (output) buffer.

SEGGER_RTT_ConfigDownBuffer()

Configure a down (input) buffer.

SEGGER_RTT_Init()

Initialize RTT Control Block structure when using RAM only targets.

SEGGER_RTT_SetTerminal()

Set the “virtual” Terminal to use for output on channel 0 via Write and WriteString.

SEGGER_RTT_TerminalOut()

Send a zero-terminated string via a “virtual” terminal.

最后,使用RTT需要在电脑上安装J-Link RTT Viewer、J-Link RTT Client、J-Link RTT Logger,这3个终端可以选择自己喜欢的安装使用。

The STM32F103xx medium-density performance line family incorporates the high-performance ARM®Cortex®-M3 32-bit RISC core operating at a 72 MHz frequency, high-speed embedded memories (Flash memory up to 128 Kbytes and SRAM up to 20 Kbytes), and an extensive range of enhanced I/Os and peripherals connected to two APB buses. All devices offer two 12-bit ADCs, three general purpose 16-bit timers plus one PWM timer, as well as standard and advanced communication interfaces: up to two I2Cs and SPIs, three USARTs, an USB and a CAN.

The devices operate from a 2.0 to 3.6 V power supply. They are available in both the –40 to +85 °C temperature range and the –40 to +105 °C extended temperature range. A comprehensive set of power-saving mode allows the design of low-power applications.The STM32F103xx medium-density performance line family includes devices in six different package types: from 36 pins to 100 pins. Depending on the device chosen, different sets of peripherals are included, the description below gives an overview of the complete range of peripherals proposed in this family.These features make the STM32F103xx medium-density performance line microcontroller family suitable for a wide range of applications such as motor drives, application control, medical and handheld equipment, PC and gaming peripherals, GPS platforms, industrial applications, PLCs, inverters, printers, scanners, alarm systems, video intercoms, and HVACs.

主要特性

STM32F103C8T6单片机采用LQFP48封装设计,芯片一共引出44只引脚,其中A口有A0-A15共16个引脚,B口有B0-B15共16个引脚,C口有C13-C15共3个引脚,D口有D0-D1共两个引脚。值得注意的是最小核心板C14和C15接了32.768K晶振,D0和D1接了8MHz晶振,一般不要用做IO口。如果实在要用只能去掉外部晶振电路(使用HSI、LSI),通过重映射和配置AFIO_MAPR寄存器实现。

THE END
0.STM32Microcontrollers(MCUs)STM32Cube tools further STM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供更高的开发自由度。该系列产品结合了高性能、实时功能、数字信号处理、低功耗/低电压操作和出色的连接性,同时保持高度集成和易于开发的特点。 STM32系列微控制器种类丰富,基于行业标准内核,提供了丰富的工具和软件https://www.st.com/zh/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html
1.STM32|产品|STM32|MCU单片机|意法半导体STM|STMCU中文STM32 32位ARM Cortex MCUSTM32系列32位微控制器基于Arm® Cortex®-M处理器,旨在为MCU用户提供新的开发自由度。它包括一系列产品,集高性能、实时功能、数字信号处理、低功耗/低电压操作、连接性等特性于一身,同时还保持了集成度高和易于开发的特点。STM32系列微控制器品种齐全,基于行业标准内核,提供了大量https://www.stmcu.com.cn/Product/pro_detail/PRODUCTSTM32/product
2.专为USBTypeC及功率传输而设的STM32解决方案现有500多款STM32 MCU已内置USB功率传输控制器外设 (UCPD),能够在不使用外部功率传输控制器的情况下实现受电、供电或双角色端口。 STM32 UCPD MCU符合最新的USB PD r3.1规范,并支持: SPR消息(标准功率范围可达100 W) EPR消息(扩展功率范围可达240 W) PPS(可编程电源) AM(备用模式) STM32MCU WIKI USB功率传https://www.st.com/content/st_com/zh/ecosystems/stm32-usb-c.html
3.STM32数字电源生态系统STM32数字电源生态系统 STM32数字电源生态系统概述 产品 进化的生态系统 资源 与Biricha展开合作 STM32数字电源生态系统 (D-Power) 可帮助开发人员加快数字SMPS、照明、焊接、太阳能系统逆变器和无线充电器等数字电源应用的开发进程。该生态系统可提供硬件、软件工具、嵌入式软件、培训资源以及相关文档。 以数字电源为https://www.st.com/content/st_com/zh/ecosystems/stm32-digital-power.html
4.STM32单片机的工作原理和调试方法控制/MCU四、STM32单片机的应用前景 1.物联网:随着物联网技术的普及,STM32系列单片机在智能家居、智能穿戴设备等领域有着广泛的应用前景。它们的高性能、低功耗和丰富的接口使其成为物联网解决方案的理想选择。 2.工业自动化:STM32系列单片机在工业自动化领域也具有广泛应用前景。它们的高性能、实时时钟和丰富的外设使得在工https://www.elecfans.com/emb/danpianji/202309132244678.html
5.STM32单片机和51单片机有何区别?51和STM32的区别 51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,它的代表型号就是ATMEL公司的AT89系列。 STM32单片机则是ST(意法半导体)公司使用ARM公司的cortex-M3为核心生https://picture.iczhiku.com/weixin/message1614561564027.html