资源简介

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


评论

共有 条评论