資源簡介
STM32F103VE 的串口使用程序,完全使用寄存器操作,沒有使用庫,我以前發了這個程序,但是在整理的時候沒有把定義等的代碼全部包含進去,我在這里先說聲對不起,這次我把完整的定義,頭文件和源代碼都包含了進來,程序中包含了所有寄存器的定義,還附上了中文說明,希望對大家有用,本程序是我給企業做項目的時候用到的,肯定是調試通過的。
代碼片段和文件信息
//發送采用查詢法,接收采用中斷法
#include?“stm32f10x_map.h“
typedef?unsigned?long??u32;
typedef?unsigned?short?u16;
typedef?unsigned?char??u8;
#define??FLAG_TC?????????((u16?)0x0040)
u8?temp?temp1temp2temp3temp4temp5;
/*************************************************
函數:?void?RCC_Config(void)
功能:?配置系統時鐘?
參數:?無
返回:?無
**************************************************/
void?RCC_Configuration(void)
{
RCC_CR?|=?(u32)(1<<16);?//外部HSE振蕩器開啟RCC_CR寄存器的HSEON位(位16)置1
while(RCC_CR&B_17?==?0);
RCC_CR?&=?~(u32)(1<<0);?//內部8MHz時鐘關閉,RCC_CR寄存器的HSION位(位0)清0
RCC_CFGR?&=?(u32)(0x00000000);?//????
???? RCC_CFGR?|=?(?(u32)(1<<18)|(0<<17)|(1<<16)|(2<<2)|(2<<0)?);//?
//時鐘配置寄存器(3*8MHZ)|(HSE不分頻)|(HSE時鐘作為PLL輸入時鐘)|(PLL輸出作為系統時鐘)
???? RCC_CFGR?|=(u32)(4<<8);?//APB1(低速APB)兩分頻,12MHz
???? RCC_CFGR|=(u32)(0<<24); //無MCO?系統時鐘(PLL)兩分頻輸出,12MHz
RCC_CFGR?|=(u32)(1<<14);?//PCLK2?4分頻后作為ADC時鐘?6MHZ
RCC_CR?|=(u32)(1<<24); //PLL使能
RCC_CIR|=(u32)(0x00000000);//時鐘中斷寄存器
}
/*************************************************
函數:?void?NVIC_Configuration(void)?
功能:?端口
參數:?無
返回:?無
**************************************************/
void?NVIC_Configuration(void)
{?
NVIC_ENINT1?|=(1<<5|1<<6|1<<7|1<<20|1<<21);??????//第5位為USART1中斷開啟位(NVIC設置)?串口12345中斷開啟
}?
/*************************************************
函數:?void?GPIO_Configuration(void)?
功能:?端口鎖定?
參數:?無
返回:?無
**************************************************/
void?GPIO_Configuration(void)
{?
???????RCC_APB2RSTR?|=??(u32)(1<<2);??//APB2?外設復位寄存器?IOA復位
???????RCC_APB2RSTR?&=?~(u32)(1<<2);//關閉APB2?外設復位寄存器?IOA復位
???????RCC_APB2RSTR?|=??(u32)(1<<3);??//APB2?外設復位寄存器?IOB復位
???????RCC_APB2RSTR?&=?~(u32)(1<<3);//關閉APB2?外設復位寄存器?IOB復位
RCC_APB2RSTR?|=??(u32)(1<<4);??//APB2?外設復位寄存器?IOC復位
???????RCC_APB2RSTR?&=?~(u32)(1<<4);//關閉APB2?外設復位寄存器?IOC復位
RCC_APB2RSTR?|=??(u32)(1<<5);??//APB2?外設復位寄存器?IOD復位
???????RCC_APB2RSTR?&=?~(u32)(1<<5);//關閉APB2?外設復位寄存器?IOD復位
???????RCC_APB2ENR??|=??(u32)(1<<2);??//IOA口時鐘開啟
RCC_APB2ENR??|=??(u32)(1<<3);??//IOB口時鐘開啟
RCC_APB2ENR??|=??(u32)(1<<4);??//IOC口時鐘開啟
RCC_APB2ENR??|=??(u32)(1<<5);??//IOD口時鐘開啟
???????GPIOA_CRL?=?(u32)0x00000000;
GPIOA_CRH?=?(u32)0x00000000;
GPIOB_CRL?=?(u32)0x00000000;
GPIOB_CRH?=?(u32)0x00000000;
GPIOD_CRL?=?(u32)0x00000000;
GPIOD_CRH?=?(u32)0x00000000;
GPIOC_CRL?=?(u32)0x00000000;
GPIOC_CRH?=?(u32)0x00000000;
GPIOA_CRL?|=?(u32)(3<<8|2<<10|0<<12|1<<14);??//USART2,PA2(TX)PA3(RX)設置
GPIOA_CRH?|=?(u32)(3<<4|2<<6|0<<8|1<<10);????//USART1,PA9(TX)PA10(RX)設置?
GPIOB_CRH?|=?(u32)(0x4b<<8);?????????????????//USART3,PB10(TX)PB11(RX)設置
GPIOC_CRH?|=?(u32)(0x4b<<8);?????????????????//UART4,PC10(TX)PC11(RX)設置
GPIOC_CRH?|=?(u32)(0xb<<16);?????????????????//UART5,PC12(TX)PD2(RX)設置 配置發送引腳
GPIOD_CRL?|=?(u32)(0x4<<8); ??????????????????????????????????????????????//配置接收引腳
}?
/*************************************************
函數:?void?USART_Configuration(void)
功能:?串口配置
參數:?無
返回:?無
***********
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????18785??2012-02-17?16:08??stm32f10x_map.h
?????文件???????8443??2012-08-19?12:54??usart.c
-----------?---------??----------?-----??----
????????????????27228????????????????????2
評論
共有 條評論