今日开始快速掌握这款STM32F103RCT6芯片的环境与编程开发,有关基础知识的部分不会多唠,直接实践与运用!文章贴出代码测试工程与测试效果图:
目录
STM32F103RCT6参数解读:
根据STM32命名规则可知,通用类型,增强型,64脚
256k字节闪存,LQFP封装,工业级温度范围-40~85度。
GPIO的基础认识与分类:
拿到一块新的芯片,首先认识与分类它的GPIO是十分重要的,现在尝试认识分类一下:
表格中红色的引脚表示有且只有这一个复用功能
串口相关:
|--------|------|------|----------|------|------|
|        | TXD  | RXD  | CTS      | RTS  | CK   |
| USART1 | PA9  | PA10 | PA11     | PA12 |      |
| USART2 | PA2  | PA3  | PA0-WKUP |      | PA4  |
| USART3 | PB10 | PB11 | PB13     | PB14 | PB12 |
| USART4 | PC10 | PC11 |          |      |      |
| USART5 | PC12 | PD2  |          |      |      |
定时器相关:
|------|--------------------|----------------|-----------------|------|----------|------|
|      | CH1                | CH2            | CH3             | CH4  | ETR      | BKIN |
| TIM1 | PB13(CH1N) PA8     | PB14(CH2N) PA9 | PB15(CH3N) PA10 | PA11 | PA12     | PB12 |
| TIM2 | PA0-WKUP (CH1_ETR) | PA1            | PA2             | PA3  |          |      |
| TIM3 | PA6                | PA7            | PB0             | PB1  | PD2      |      |
| TIM4 | PB6                | PB7            | PB8             | PB9  |          |      |
| TIM5 | PA0-WKUP           | PA1            | PA2             | PA3  |          |      |
| TIM8 | PA7(CH1N) PC6      | PB0(CH2N) PC7  | PB1(CH3N) PC8   | PC9  | PA0-WKUP | PA6  |
IIC相关:
|------|------|------|------|
|      | SCL  | SDA  | SMBA |
| IIC1 | PB6  | PB7  | PB5  |
| IIC2 | PB10 | PB11 | PB12 |
ADC相关:
|--------|----------|-----|-----|-----|-----|-----|
|        | IN0      | IN1 | IN2 | IN3 | IN4 | IN5 |
| ADC123 | PA0-WKUP | PA1 | PA2 | PA3 | PA4 | PA5 |
|--------|-----|-----|-----|-----|------|------|
|        | IN6 | IN7 | IN8 | IN9 | IN10 | IN11 |
| ADC123 | PA6 | PA7 | PB0 | PB1 | PC0  | PC1  |
|--------|------|------|------|------|
|        | IN12 | IN13 | IN14 | IN15 |
| ADC123 | PC2  | PC3  | PC4  | PC5  |
DAC相关:
|-----|------|------|------|------|------|
|     | OUT1 | OUT2 | OUT3 | OUT4 | OUT5 |
| DAC | PA4  | PA5  |      |      |      |
SPI相关:
|------|------|------|------|------|
|      | NSS  | SCK  | MISO | MOSI |
| SPI1 | PA4  | PA5  | PA6  | PA7  |
| SPI2 | PB12 | PB13 | PB14 | PB15 |
| SPI3 |      | PB3  |      | PB5  |
其余引脚:
VBAT:
备用电池供电的引脚(可接一个3V的电池,当系统断电时,备用电池可以给内部的RTC时钟和备份寄存器提供电源)
PC13-TAMPER-RTC:
IO口(可以根据程序输出或读取高低电平)或者侵入检测(做安全保障功能)或者RTC(输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲)
PC14-OSC32_IN 和 PC15-OSC32_OUT:
IO口或者接32.768KHz的RTC晶振
OSC_IN、OSC_OUT:
接系统的主晶振,一般是8Hz的(芯片内部有锁相环电路,可以对这个8Hz的频率进行倍频,最终产生72MHz的频率,作为系统的主时钟)
NRST:
系统复位引脚(N代表低电平复位的)
VSSA、VDDA:
内部模拟部分的电源(比如ADC、RC震荡器等),VSS是负极接GND,VCC是正极接3.3V
PB2:
IO口或者BOOT1引脚(BOOT引脚是用来配置启动模式的)
JTCK/SWCLK:
PA14,IO口或者调试端口,调试程序或者下载程序
JTDI:
PA15,IO口或者调试端口,调试程序或者下载程序
JTDO:
PB3,IO口或者调试端口,调试程序或者下载程序
NJTRST:
PB4,可以复用为普通IO使用
BOOT0:
用来做启动配置的
最后剩下10个引脚都是VSS\VDD相关的供电引脚
GPIO基本输出的配置:
这里先配置一下基本的输出---我们在查阅上述分类的表格可以发现,大部分搭载有各种模块功能的引脚都是PA、PB系列的,而PC0~PC5大多功能都只有ADC采样相关这一个复用功能,因此比较适合用来作为普通输入输出口使用:
实验设计:
使用PC2周期性点亮熄灭一个灯
代码:
Tip: 引脚的初始化与置位方面,可以通过 "|" (或)操作来一次性初始化同一系列的多个引脚
#include "delay.h"
#include "sys.h"
//GPIO_SetBits(GPIOB,GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_1);	
void LED_init(void)
{
	GPIO_InitTypeDef  GPIO_InitStructure;
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);	 //使能端口时钟
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
//	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_11|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_1;	 
 	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		   //推挽输出
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      //速度50MHz
 	GPIO_Init(GPIOC, &GPIO_InitStructure);
}
int main(void)
{
	delay_init();
	NVIC_Configuration();
	LED_init();
	
	while(1)
	{
		delay_ms(500);
		GPIO_SetBits(GPIOC,GPIO_Pin_2);
		delay_ms(500);
		GPIO_ResetBits(GPIOC,GPIO_Pin_2);
	}
}实验效果:

测试工程下载:
https://download.csdn.net/download/qq_64257614/88357563?spm=1001.2014.3001.5503
参考文章:
对stm32F103RCT6原理图解析(详细)_ghujlhdrx的博客-CSDN博客
STM32F103RCT6-64PIN引脚功能表格_stm32f103rct6引脚功能_FLYMCUCN的博客-CSDN博客
STM32系统结构介绍_stm32的pc13功能_藤椒鱼块的博客-CSDN博客