STM32 Uart串口中斷響應、發送接收詳細程序_第1頁
STM32 Uart串口中斷響應、發送接收詳細程序_第2頁
STM32 Uart串口中斷響應、發送接收詳細程序_第3頁
STM32 Uart串口中斷響應、發送接收詳細程序_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、程序實現功能:可以直接接收USART1的數據,并通過串口調試輸出顯示#includestm32f10x_lib.hvoid NVIC_Configuration(void);void RCC_Configuration(void);void GPIO_Configuration(void);ErrorStatus HSEStartUpStatus;USART_InitTypeDef USART_InitStructure;USART_ClockInitTypeDef USART_ClockInitStructure;int main() #ifdef DEBUG debug #endif RC

2、C_Configuration(); NVIC_Configuration(); GPIO_Configuration();/*串口傳輸速率的大小必須與RCC所設定的時鐘相對應起來*/ USART_InitStructure.USART_BaudRate = 9600; /設置USART的傳輸速率 /*設定數據的接收發送模式*/ USART_InitStructure.USART_WordLength = USART_WordLength_8b;/在一幀中傳輸或接受8位數據位 USART_InitStructure.USART_StopBits = USART_StopBits_1; /定義在

3、幀的結尾傳輸一個停止位 USART_InitStructure.USART_Parity = USART_Parity_No; /奇偶失能 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; /指定硬件流控制模式RTS和CTS使能 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; /指定使能或失能發送和接受模式 Tx發送使能和Rx接收使能 USART_ClockInitStructure.USART_Clock

4、 = USART_Clock_Disable; /提升USART時鐘時使能還是失能,鐘低電平活動 USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; /指定SLCK引腳上時鐘的極性 USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; /時鐘第二個邊緣進行數據捕獲 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /在SCLK引腳上輸出最后發送的那個數據字的脈沖不從SCLK輸出 USART_ClockIn

5、it(USART1, &USART_ClockInitStructure); USART_Init(USART1, &USART_InitStructure);/*輸入輸出的中斷使能*/ USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); USART_Cmd(USART1, ENABLE); /啟動串口 使能USART1外設 while(1) /* USART_SendData(USART1, 0X26); /發送數據 while(USART_GetFlagSt

6、atus(USART1, USART_FLAG_TXE) = RESET)/等待發送結束 */ void NVIC_Configuration(void) NVIC_InitTypeDef NVIC_InitStructure;#ifdef VETB_TAB_RAM NVYC_SetVectorTable(NVIC_VectTab_RAM,0x0);#else NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif /* Enable the USART1 Interrupt */ NVIC_InitStructure.NVIC_IRQChan

7、nel = USART1_IRQChannel; /通道設置為串口1中斷(故后面應選擇在“void USART1_IRQHandler(void)”開中斷) NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /中斷占先等級0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /中斷響應優先級0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /打開中斷 NVIC_Init(&NVIC_InitStructure);void RCC

8、_Configuration(void) RCC_DeInit(); RCC_HSEConfig(RCC_HSE_ON); HSEStartUpStatus=RCC_WaitForHSEStartUp(); if(HSEStartUpStatus=SUCCESS) FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); FLASH_SetLatency(FLASH_Latency_2); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); /串口波特率的確定 RCC

9、_PCLK1Config(RCC_HCLK_Div2); RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9); RCC_PLLCmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY=RESET) RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); while(RCC_GetSYSCLKSource()!=0x08) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE|RCC_APB2

10、Periph_USART1, ENABLE); /RCC中打開相應的串口 void GPIO_Configuration(void) GPIO_InitTypeDef GPIO_InitStructure; / GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); /改變指定管腳腳的映射 Changes the mapping of the specified pin /* Configure USART1 RTS (PA12) and USART1 Tx (PA9) as alternate function push-pull 根據資料可查得各管腳

11、對應*/ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /推挽輸出 GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART2 CTS (PA11) and USART1 Rx (PA10) as input floating */ GPIO_InitStructure.GPIO_Pin =GPIO_Pin_

12、10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_0|GPIO_Pin_2|GPIO_Pin_3; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP; GPIO_Init(GPIOE,&GPIO_InitStructure

13、); 中斷函數: (可在stm32f10x_.it.c中調用)void USART1_IRQHandler(void) u8 RX_dat; /定義字符變量 if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) /判斷發生接收中斷 GPIO_WriteBit(GPIOE, GPIO_Pin_1, (BitAction)0x01); /LED M RX_dat=(USART_ReceiveData(USART1) & 0x7F); /接收數據,整理除去前兩位 USART_ClearITPendingBit(USART1, USART_IT_RXNE); /清除中斷標志 while(USAR

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論