✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇
一、引言
STM32F103C8T6是意法半导体(ST)推出的一款基于ARM Cortex - M3内核的32位微控制器,属于STM32系列中的增强型产品。它凭借丰富的外设资源、高性能和较低的成本,在工业控制、消费电子、物联网等众多领域得到了广泛应用。了解该芯片的引脚定义及功能,对于开发基于STM32F103C8T6的项目至关重要。
二、芯片概述
STM32F103C8T6采用LQFP48封装,具有48个引脚。该芯片工作频率最高可达72MHz,内置64KB的闪存和20KB的SRAM,提供了丰富的外设接口,如GPIO、USART、SPI、I2C、ADC等。
三、引脚分类及功能
3.1 电源引脚
- VDD和VSS:VDD为芯片提供正电源,通常接3.3V;VSS为接地引脚。STM32F103C8T6有多个VDD和VSS引脚,分布在芯片的不同位置,以保证电源的稳定供应。在设计电路时,需要在这些引脚附近添加去耦电容,以滤除电源中的高频噪声。
- VDDA和VSSA:VDDA是模拟电源输入,VSSA是模拟地。这两个引脚主要为芯片内部的模拟外设(如ADC)提供电源,为了减少数字电路对模拟电路的干扰,VDDA和VSSA应与VDD和VSS分开布线,并通过磁珠或电感进行隔离。
3.2 时钟引脚
- OSC_IN和OSC_OUT:这两个引脚用于连接外部晶振,为芯片提供主时钟源。通常会连接一个8MHz的晶振,芯片内部的PLL(锁相环)可以将该时钟频率倍频到最高72MHz。
- MCO:微控制器时钟输出引脚,可以将芯片内部的时钟信号输出到外部,方便进行时钟调试和同步。
3.3 复位引脚
- NRST:复位引脚,低电平有效。当该引脚为低电平时,芯片将进行复位操作,恢复到初始状态。在实际应用中,通常会在该引脚连接一个复位电路,以确保芯片在需要时能够可靠复位。
3.4 GPIO引脚
GPIO(通用输入输出)引脚是芯片中最常用的引脚类型,STM32F103C8T6共有37个GPIO引脚,分为A、B、C、D四个端口(其中部分引脚复用了其他功能)。每个GPIO引脚可以通过软件配置为输入或输出模式,还可以设置上拉、下拉或浮空等输入模式。
例如,将PA0引脚配置为输出模式,并控制其输出高低电平的代码如下:
#include "stm32f1xx_hal.h"
GPIO_InitTypeDef GPIO_InitStruct = {
0};
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
while (1)
{
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET); // PA0输出高电平
HAL_Delay(1000);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET); // PA0输出低电平
HAL_Delay(1000);
}
}
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {
0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {
0};
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
Error_Handler();
}
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct