一、引腳圖及概述
STM32F103C8T6是意法半導體的一款低功耗、高性能32位ARM Cortex-M3單片微控制器。它的引腳圖如下所示:
+------------------------+ | 1 48 | GPIOA | PA0 PA7 | EXTI0 | 2 47 | GPIOB | PB0 PB15| TIM3_CH3 | 3 46 | GPIOC | PC13 PC15| | 4 45 | GPIOD | PD2 PD7 | | 5 44 | GPIOE | PE0 PE15| ADC12 | -- -- | ADC12 | VREF+ VSS | ADC12 | -- -- | | 6 43 | GPIOF | PF0 PF1 | | 7 42 | OSCO | -- -- | OSC32_IN OSCMI | -- -- | OSC32_OUT | 8 41 | BOOT | -- -- | | 9 40 | NRST | -- -- | |10 39 | VSS2 | -- -- | |11 38 | VDD | -- -- | |12 37 | OSC32 | -- -- | |13 36 | OSC_IN| -- -- | |14 35 | OSC_OUT| -- -- | |15 34 | PA8| TIM1_CH1 TIM1_CH1N| |16 33 | PA9| USART1_TX TIM1_CH2 | |17 32 | GND2| -- -- | |18 31 | VDDA| -- -- | |19 30 | PA10| USART1_RX TIM1_CH3 | ADC12 | -- -- | ADC12 | -- -- | ADC12 | -- -- | |20 29 | PA11 | TIM1_CH4 USART1_CTS | |21 28 | PA12 | TIM1_ETR USART1_RTS | |22 27 | PA15| -- SPI1_NSS | ADC12 | -- SPI1_MISO| ADC12 | -- SPI1_MOSI| |23 26 | PC14| -- SPI1_SCK | |24 25 | PC13| -- -- | +------------------------+
從圖中可以看出,STM32F103C8T6共有48個引腳,其中16個GPIO口(GPIOA~GPIOE)可用於輸入/輸出,同時還包括ADC、定時器、UART、SPI等專用功能引腳。
二、GPIO口
GPIO即通用輸入輸出口,STM32F103C8T6共有16個GPIO口,每個GPIO口都有自己的控制寄存器,可通過寄存器寫入控制字來控制GPIO口的狀態。GPIO口主要有以下3個方面的功能:
1.輸入模式:懸浮輸入(默認狀態)、上拉輸入和下拉輸入。
2.輸出模式:推挽輸出、開漏輸出和復用推挽輸出。
3.複合功能GPIO:ADC、定時器以及類比DAC等,需要通過復用功能開啟。
下面是一個GPIO口的輸入模式的例子:
//使能GPIOA口時鐘 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //初始化GPIOA2口為上拉輸入 GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉輸入 GPIO_Init(GPIOA, &GPIO_InitStructure);
三、定時器
STM32F103C8T6內置了三個16位的計數器和一 個基本定時器,所有定時器都能夠匹配外部模擬或數字信號
下面是一個TIM3初始化的例子:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseInitTypeDef TIM_InitStructure; TIM_InitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_InitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_InitStructure.TIM_Period = 2000-1; //2000個時鐘周期為1ms TIM_InitStructure.TIM_Prescaler = 7200-1; //7200個時鐘周期為10ms TIM_TimeBaseInit(TIM3, &TIM_InitStructure); TIM_Cmd(TIM3, ENABLE);
四、ADC
STM32F103C8T6內置了一個12位精度的模擬數字轉換器(ADC),同時支持多路模擬輸入和單通道轉換、多通道轉換以及連續轉換等模式。
下面是一個開啟ADC的例子:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模擬輸入口 GPIO_Init(GPIOA, &GPIO_InitStructure); ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //獨立ADC模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //禁止連續轉換 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //右對齊 ADC_InitStructure.ADC_NbrOfChannel = 1; ADC_Init(ADC1, &ADC_InitStructure); ADC_Cmd(ADC1, ENABLE); //開啟ADC模塊
五、UART
STM32F103C8T6內置3個同步串列通信口(UART),用於與外部設備進行串列通信。其中USART1是配備有硬體流控制的通信口,也是硬體模擬模式使用的調試口,可用於與計算機進行通信完成信息的調試工作。
下面是一個USART1初始化的例子:
USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);
六、SPI
STM32F103C8T6內置2個SPI通信口,支持主從之間的通信。SPI通信一般需要對時序進行控制,因此主機需要掌握SPI通信的時序。
下面是SPI1初始化的例子:
SPI_InitTypeDef SPI_InitStructure; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); SPI_Cmd(SPI1, ENABLE);
七、小結
STM32F103C8T6引腳圖及功能豐富多樣,可以用於多種應用場景。它的GPIO口、定時器、ADC、UART和SPI等模塊都是使用時比較常見的硬體,希望以上的例子可以給需要使用的人提供一些參考。
原創文章,作者:ZPYD,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/149732.html