当前位置:   article > 正文

2024年物联网嵌入式最新STM32F103C8T6单片机简介(2),太厉害了_stm32c8t6

stm32c8t6

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取


二、最小系统板

或许大家有经常听起过最小系统板这个词儿,那么什么是最小系统板呢?其实最小系统板就是一个最精简的电路,精简到只能维持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)。

1.ISP下载

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)相连。

了解接线后,可以尝试编译下载。下载软件有很多,ST官方出了Flash Loader Demonstrator软件用于程序下载,国内也有一款FLYMCU的下载软件。

Flash Loader Demonstrator

2.SWD下载

使用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

3.JTAG下载

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口,那么代码层面需要这样实现:

    GPIO_InitTypeDef GPIO_InitStructure;
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);//使能PORTA时钟
	GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE);// 关闭JTAG但使能SWD
	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_15;//PA15
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 
 	GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIO
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

详细关闭方法:见另一位博主的《STM32 JTAG调试》

六、RTT

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官网

不过使用RTT功能是需要往工程文件里添加SEGGER提供的源代码的,官网安装包:" data-link-title=“<官网下载>”><官网下载>**,**详细的安装与使用教程见《硬汉哥分享的资料》

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

函数名描述
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个终端可以选择自己喜欢的安装使用。

RTTViewer

七、RTOS

RTOS(Real-time operating system)是实时操作系统的总称,目前市面上有freeRTOS、RT-Thread、UCOS-III等多种实时操作系统,到了STM32这种复杂而强大的硬件层面,程序员将不再仅仅拿它当传统的MCU来跑裸机程序(裸机是指没有用上RTOS的程序),而是开始考虑程序的协调性和并行多任务(并不是真正意义上的并行,因为单核同一时间只能处理一件事情)。RTOS是一个有趣的东西,如果大家感兴趣我后期会考虑更新一篇有关RTOS的文章,大家目前可以去freeRTOS官网看看或者阅读其他作者的文章。

八、官网原文介绍

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.

主要特性

  • ARM®32-bit Cortex®-M3 CPU Core

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

b-1715660126092)]
[外链图片转存中…(img-vELoF0Gr-1715660126093)]

如果你需要这些资料,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
  

闽ICP备14008679号