您的位置 首页 设计

stm32串口中止接纳发送试验

intmain(){u32i=0;/*芯片配置初始化———————————————————-*/RCC_Configurat

intmain()

{

u32i=0;

/*芯片装备初始化———————————————————-*/

RCC_Configuration();//复位和时钟操控装备

NVIC_Configuration();//嵌套中止向量操控器装备

GPIO_Configuration();//I/O装备

USART_Configuration();//串口装备

/*指示灯初始化————————————————————*/

GPIO_SetBits(GPIOA,GPIO_Pin_12);//平息LED1

GPIO_SetBits(GPIOA,GPIO_Pin_15);//平息LED2

while(1)

{

i++;

if(500000==i)//LED1业绩,一共正常。

{

GPIO_WriteBit(GPIOA,GPIO_Pin_12,(BitAction)(1-GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_12)));

i=0;

}

}

}

/******************************************************************************************

*函数称号:RCC_Configuration

*功用描绘:

*参数:

*

*返回值:

*作者:

*创立日期:2013年5月2日

*大局变量

*大局静态变量:

*部分静态变量:

******************************************************************************************/

voidRCC_Configuration(void)

{

/*RCCsystemreset(fordebugpurpose)*/

RCC_DeInit();//RCC体系初始化,设为默认值

/*EnableHSE*/

RCC_HSEConfig(RCC_HSE_ON);//使能外部晶振(8MHz),封闭旁路

/*WaittillHSEisready*/

HSEStartUpStatus=RCC_WaitForHSEStartUp();//等候外部高速时钟安稳

if(HSEStartUpStatus==SUCCESS)//时钟安排妥当成功

{

/*EnablePrefetchBuffer*/

/*AHB预分频系数不为1时,有必要置预取缓冲区处于舱位状况

应与闪存存储器的拜访时刻一同运用

激活和制止预取形式时应该在制止快速时钟时进行(封闭AHB的分频器)*/

FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);//

/*HCLK=SYSCLK*/

RCC_HCLKConfig(RCC_SYSCLK_Div1);//SYSCLK不分频,作为AHB时钟(HCLK,闪存、SRAM等外设时钟设置):36M

/*PCLK2=HCLK*/

RCC_PCLK2Config(RCC_HCLK_Div1);//AHBCLK不分频,作为高速APB(APB2)时钟(PCLK2):36M

/*PCLK1=HCLK/2*/

RCC_PCLK1Config(RCC_HCLK_Div1);//AHBCLK二分频,作为低速APB(APB1)时钟(PCLK1):36M

/*ADCCLK=PCLK2/6*/

RCC_ADCCLKConfig(RCC_PCLK2_Div6);//PCLK26分频,作为ADC时钟(ADCCLK):6M

/*Flash2waitstate*/

/*(SYSCLK)频率与闪存拜访时刻的联系:

0等候周期,当0

1等候周期,当24MHz

2等候周期,当48MHz

*/

FLASH_SetLatency(FLASH_Latency_1);//设置1个等候周期

/*PLLCLK=8MHz/2*9=36MHz*/

RCC_PLLConfig(RCC_PLLSource_HSE_Div2,RCC_PLLMul_9);//外部时钟2分频后,9倍频(PLL),得36MHz

/*EnablePLL*/

RCC_PLLCmd(ENABLE);//使能PLL电路

/*WaittillPLLisready*/

while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET)//等候PLL电路安排妥当

{

}

/*SelectPLLassystemclocksource*/

RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//挑选PLL倍频时钟作为体系时钟(SYSCLK):36MHz

/*WaittillPLLisusedassystemclocksource*/

while(RCC_GetSYSCLKSource()!=0x08)//等候PLL切换成体系时钟源

{

}

/*SelectHSEassystemclocksource*/

//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);//挑选外部晶振作为体系时钟源(SYSCLK)

/*WaittillHSEisusedassystemclocksource*/

//while(RCC_GetSYSCLKSource()!=0x04)//等候HSE切换成体系时钟源,并作为输出时钟(该时钟或许会有毛刺,仅作调试)

//{

//}

}

/*GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、AFIO时钟使能*/

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC

|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_AFIO,ENABLE);

/*USART3Periphclockenable*/

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//USART3时钟使能(APB2)

}

/******************************************************************************************

*函数称号:NVIC_Configuraion

*功用描绘:

*参数:

*

*返回值:

*作者:

*创立日期:2013年5月2日

*大局变量:

*大局静态变量:

*部分静态变量:

******************************************************************************************/

voidNVIC_Configuration(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

#ifdefVECT_TAB_RAM

/*SettheVectorTablebaselocationat0x20000000*/

NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);//RAM

#else/*VECT_TAB_FLASH*/

/*SettheVectorTablebaselocationat0x08000000*/

NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);//FLASH

#endif

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//挑选第2组为优先级分组方法:高2位指定抢占优先级,低2位指定呼应优先级

/*enablinginterrupt*/

NVIC_InitStructure.NVIC_IRQChannel=USART3_IRQChannel;//USART中止

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//占先级为0级,最高

NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//呼应级最高0

NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//发动中止

NVIC_Init(&NVIC_InitStructure);//初始化嵌套向量中止操控器

}

/******************************************************************************************

*函数称号:GPIO_Configuration

*功用描绘:

*参数:

*

*返回值:

*作者:

*创立日期:2013年5月2日

*大局变量:

*大局静态变量:

*部分静态变量:

******************************************************************************************/

voidGPIO_Configuration(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//关掉JTAG,开释PA15,PB3,PB4

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12|GPIO_Pin_15;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOA,&GPIO_InitStructure);

/*ConfigureUSART3Tx(PB.10)asalternatefunctionpush-pull*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

/*ConfigureUSART3Rx(PB.11)asinputfloating*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOB,&GPIO_InitStructure);//RX初始化

}

/******************************************************************************************

*函数称号:GPIO_Configuration

*功用描绘:

*参数:

*

*返回值:

*作者:

*创立日期:2013年5月2日

*大局变量:

*大局静态变量:

*部分静态变量:

******************************************************************************************/

voidUSART_Configuration(void)

{

USART_InitTypeDefUSART_InitStructure;

USART_InitStructure.USART_BaudRate=9600;//波特率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;//串口发送和接纳形式

/*ConfigureUSART3basicandasynchronousparamters*/

USART_Init(USART3,&USART_InitStructure);//串口初始化

/*EnableUSART3*/

USART_Cmd(USART3,ENABLE);//指令翻开

/*EnablesCOMtransmitinterrupt*/

USART_ITConfig(USART3,USART_IT_TC,ENABLE);//发送中止翻开

/*EnablesCOMreceiveinterrupt*/

USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//接纳中止翻开

}

voidDelay(vu32nCount)

{

for(;nCount!=0;nCount–);

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/sheji/264802.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部