色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > stm32串口中斷接收發(fā)送實驗

          stm32串口中斷接收發(fā)送實驗

          作者: 時間:2016-11-19 來源:網(wǎng)絡 收藏
          intmain()

          本文引用地址:http://cafeforensic.com/article/201611/318081.htm

          {

          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;

          }

          }

          }

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

          *函數(shù)名稱:RCC_Configuration

          *功能描述:

          *參數(shù):

          *

          *返回值:

          *作者:

          *創(chuàng)建日期:2013年5月2日

          *全局變量

          *全局靜態(tài)變量:

          *局部靜態(tài)變量:

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

          voidRCC_Configuration(void)

          {

          /*RCCsystemreset(fordebugpurpose)*/

          RCC_DeInit();//RCC系統(tǒng)初始化,設為默認值

          /*EnableHSE*/

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

          /*WaittillHSEisready*/

          HSEStartUpStatus=RCC_WaitForHSEStartUp();//等待外部高速時鐘穩(wěn)定

          if(HSEStartUpStatus==SUCCESS)//時鐘就緒成功

          {

          /*EnablePrefetchBuffer*/

          /*AHB預分頻系數(shù)不為1時,必須置預取緩沖區(qū)處于開啟狀態(tài)

          應與閃存存儲器的訪問時間一起使用

          激活和禁止預取模式時應該在禁止快速時鐘時進行(關閉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倍頻時鐘作為系統(tǒng)時鐘(SYSCLK):36MHz

          /*WaittillPLLisusedassystemclocksource*/

          while(RCC_GetSYSCLKSource()!=0x08)//等待PLL切換成系統(tǒng)時鐘源

          {

          }

          /*SelectHSEassystemclocksource*/

          //RCC_SYSCLKConfig(RCC_SYSCLKSource_HSE);//選擇外部晶振作為系統(tǒng)時鐘源(SYSCLK)

          /*WaittillHSEisusedassystemclocksource*/

          //while(RCC_GetSYSCLKSource()!=0x04)//等待HSE切換成系統(tǒng)時鐘源,并作為輸出時鐘(該時鐘可能會有毛刺,僅作調(diào)試)

          //{

          //}

          }

          /*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)

          }

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

          *函數(shù)名稱:NVIC_Configuraion

          *功能描述:

          *參數(shù):

          *

          *返回值:

          *作者:

          *創(chuàng)建日期:2013年5月2日

          *全局變量:

          *全局靜態(tài)變量:

          *局部靜態(tài)變量:

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

          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組為優(yōu)先級分組方式:高2位指定搶占優(yōu)先級,低2位指定響應優(yōu)先級

          /*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);//初始化嵌套向量中斷控制器

          }

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

          *函數(shù)名稱:GPIO_Configuration

          *功能描述:

          *參數(shù):

          *

          *返回值:

          *作者:

          *創(chuàng)建日期:2013年5月2日

          *全局變量:

          *全局靜態(tài)變量:

          *局部靜態(tài)變量:

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

          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初始化

          }

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

          *函數(shù)名稱:GPIO_Configuration

          *功能描述:

          *參數(shù):

          *

          *返回值:

          *作者:

          *創(chuàng)建日期:2013年5月2日

          *全局變量:

          *全局靜態(tài)變量:

          *局部靜態(tài)變量:

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

          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;//串口發(fā)送和接收模式

          /*ConfigureUSART3basicandasynchronousparamters*/

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

          /*EnableUSART3*/

          USART_Cmd(USART3,ENABLE);//指令打開

          /*EnablesCOMtransmitinterrupt*/

          USART_ITConfig(USART3,USART_IT_TC,ENABLE);//發(fā)送中斷打開

          /*EnablesCOMreceiveinterrupt*/

          USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//接收中斷打開

          }

          voidDelay(vu32nCount)

          {

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

          }



          評論


          技術專區(qū)

          關閉