STM32 Uart串口中斷響應(yīng)、發(fā)送接收詳細(xì)程序_第1頁(yè)
STM32 Uart串口中斷響應(yīng)、發(fā)送接收詳細(xì)程序_第2頁(yè)
STM32 Uart串口中斷響應(yīng)、發(fā)送接收詳細(xì)程序_第3頁(yè)
STM32 Uart串口中斷響應(yīng)、發(fā)送接收詳細(xì)程序_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、程序?qū)崿F(xiàn)功能:可以直接接收USART1的數(shù)據(jù),并通過(guò)串口調(diào)試輸出顯示#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所設(shè)定的時(shí)鐘相對(duì)應(yīng)起來(lái)*/ USART_InitStructure.USART_BaudRate = 9600; /設(shè)置USART的傳輸速率 /*設(shè)定數(shù)據(jù)的接收發(fā)送模式*/ USART_InitStructure.USART_WordLength = USART_WordLength_8b;/在一幀中傳輸或接受8位數(shù)據(jù)位 USART_InitStructure.USART_StopBits = USART_StopBits_1; /定義在

3、幀的結(jié)尾傳輸一個(gè)停止位 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; /指定使能或失能發(fā)送和接受模式 Tx發(fā)送使能和Rx接收使能 USART_ClockInitStructure.USART_Clock

4、 = USART_Clock_Disable; /提升USART時(shí)鐘時(shí)使能還是失能,鐘低電平活動(dòng) USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low; /指定SLCK引腳上時(shí)鐘的極性 USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge; /時(shí)鐘第二個(gè)邊緣進(jìn)行數(shù)據(jù)捕獲 USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable; /在SCLK引腳上輸出最后發(fā)送的那個(gè)數(shù)據(jù)字的脈沖不從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); /啟動(dòng)串口 使能USART1外設(shè) while(1) /* USART_SendData(USART1, 0X26); /發(fā)送數(shù)據(jù) while(USART_GetFlagSt

6、atus(USART1, USART_FLAG_TXE) = RESET)/等待發(fā)送結(jié)束 */ 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; /通道設(shè)置為串口1中斷(故后面應(yīng)選擇在“void USART1_IRQHandler(void)”開(kāi)中斷) NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; /中斷占先等級(jí)0 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; /中斷響應(yīng)優(yōu)先級(jí)0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /打開(kāi)中斷 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中打開(kāi)相應(yīng)的串口 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 根據(jù)資料可查得各管腳

11、對(duì)應(yīng)*/ 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、); 中斷函數(shù): (可在stm32f10x_.it.c中調(diào)用)void USART1_IRQHandler(void) u8 RX_dat; /定義字符變量 if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) /判斷發(fā)生接收中斷 GPIO_WriteBit(GPIOE, GPIO_Pin_1, (BitAction)0x01); /LED M RX_dat=(USART_ReceiveData(USART1) & 0x7F); /接收數(shù)據(jù),整理除去前兩位 USART_ClearITPendingBit(USART1, USART_IT_RXNE); /清除中斷標(biāo)志 while(USAR

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論