面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)-21-STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第1頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)-21-STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第2頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)-21-STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第3頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)-21-STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第4頁
面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)-21-STM32串口通信技術(shù)應(yīng)用開發(fā)課件_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

CC2530和STM32嵌入式接口技術(shù)開發(fā)5.7STM32串口通信技術(shù)應(yīng)用開發(fā)CC2530和STM32嵌入式接口技術(shù)開發(fā)5.7STM32串口介紹STM32的USARTSTM32串口庫函數(shù)的使用項目實踐串口介紹串口通信協(xié)議串口通信(SerialCommunications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。串口通信協(xié)議串口通信(SerialCommunicatioSTM32的串口介紹STM32芯片具有多個USART外設(shè)用于串口通訊,它是UniversalSynchronousAsynchronousReceiverandTransmitter的縮寫,即通用同步異步收發(fā)器可以靈活地與外部設(shè)備進行全雙工數(shù)據(jù)交換。STM32的串口介紹STM32芯片具有多個USART外設(shè)USART串口的原理1.串口通用功能引腳TXD:發(fā)送引腳RXD:接收引腳2.串口的數(shù)據(jù)收發(fā)寄存器數(shù)據(jù)接收與發(fā)送寄存器相互獨立,可以實現(xiàn)同步數(shù)據(jù)收發(fā)。3.串口數(shù)據(jù)收發(fā)控制器控制串口的數(shù)據(jù)發(fā)送、接收、喚醒、中斷控制等等。4.波特率生成器對數(shù)據(jù)發(fā)送和接收的波特率進行控制。USART串口的原理1.串口通用功能引腳STM32F4xx系類串口位置STM32芯片的串口眾多,根據(jù)掛載在不同時鐘總線上的串口可分為高速串口和一般串口,又由于控制器的不同可分為同步串口和異步串口。STM32F4xx系類串口位置STM32芯片的串口眾多,根據(jù)USART串口外部中斷請求中斷事件事件標(biāo)志使能控制位發(fā)送數(shù)據(jù)寄存器為空TXETXEIECTS標(biāo)志CTSCTSIE發(fā)送完成TCTCIE準(zhǔn)備好讀取接收到的數(shù)據(jù)RXNERXNEIE檢測到上溢錯誤ORE檢測到空閑線路IDLEIDLEIE奇偶校驗錯誤PEPEIE斷路標(biāo)志LBDLBDIE多緩沖通信中的噪聲標(biāo)志、上溢錯誤和幀錯誤NF/ORE/FEEIE串口是一種常用的通訊手段,當(dāng)數(shù)據(jù)量較大是就會遇到各種各樣的問題,因此對各種問題也要有一定的中斷處理機制。USART串口外部中斷請求中斷事件事件標(biāo)志使能控制位發(fā)送數(shù)據(jù)串口配置流程1.使能端口和時鐘RCC_AHB1PeriphClockCmd(DEBUG_USART_RX_GPIO_CLK|DEBUG_USART_TX_GPIO_CLK,ENABLE);GPIO_Init(DEBUG_USART_RX_GPIO_PORT,&GPIO_InitStructure);2.配置端口復(fù)用GPIO_PinAFConfig(DEBUG_USART_RX_GPIO_PORT,DEBUG_USART_RX_SOURCE,DEBUG_USART_RX_AF);GPIO_PinAFConfig(DEBUG_USART_TX_GPIO_PORT,DEBUG_USART_TX_SOURCE,DEBUG_USART_TX_AF);3.初始化串口相關(guān)參數(shù)USART_Init(DEBUG_USART,&USART_InitStructure);4.使能串口USART_Cmd(DEBUG_USART,ENABLE);STM32串口庫精簡度很高,配置較為簡單,只需配置時鐘、復(fù)用、串口參數(shù)即可。串口配置流程1.使能端口和時鐘RCC_AHB1Periph串口初始化參數(shù)typedefstruct{uint32_tUSART_BaudRate;//波特率波特率越高數(shù)據(jù)傳輸速率越快,但傳輸距離越短uint16_tUSART_WordLength;//字長用于配置數(shù)據(jù)長度,字長通常有5位、6位、7位和8位等uint16_tUSART_StopBits;//停止位作為一條信息的結(jié)束位,有1位和2位兩種情況uint16_tUSART_Parity;//校驗位校驗數(shù)據(jù)在發(fā)送過程中是否出錯uint16_tUSART_Mode;//USART模式用于確認串口的收發(fā)模式uint16_tUSART_HardwareFlowControl;//硬件流控制,通常不配置不使能}USART_InitTypeDef;//串口配置結(jié)構(gòu)體串口配置主要需要注意三個參數(shù),波特率、數(shù)據(jù)長度、停止位和校驗位即可,在使用串口時另一個串口接口要于此保持一致。串口初始化參數(shù)typedefstruct{串口配置主要需項目場景串口是工業(yè)主板上一種非常通用設(shè)備通信的協(xié)議,大多數(shù)工業(yè)主板包含兩個以上基于RS-232的串口。串口是按位(bit)發(fā)送和接收字節(jié),速度要比按字節(jié)(byte)的并行通信慢,但串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),能夠簡單實現(xiàn)遠距離通信。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。項目場景串口是工業(yè)主板上一種非常通用設(shè)備通信的協(xié)議,大多數(shù)工任務(wù)目標(biāo)使用STM32處理器模擬設(shè)備與中央控制臺間的數(shù)據(jù)交互。STM32與PC及通過串口相連,通過PC機上機向STM32處理器發(fā)送數(shù)據(jù)。STM32處理器接受到數(shù)據(jù)后回顯,STM32處理器當(dāng)通過串口接受到了特定的字符時向PC機打印接受到的所有數(shù)據(jù),以此實現(xiàn)STM32處理器與PC機的交互。任務(wù)目標(biāo)使用STM32處理器模擬設(shè)備與中央控制臺間的數(shù)據(jù)交互項目分析STM32F407的函數(shù)庫接口十分精簡,串口的配置也同樣如此。通常STM32F407的的結(jié)構(gòu)體配置主要注意幾個參數(shù)即可,即波特率、數(shù)據(jù)位、校驗位和停止位。在使用串口是需要配置相關(guān)的PC端的串口上位機,配置上位機時要注意配置的串口參數(shù)要與芯片本身配置的串口參數(shù)一致。項目分析STM32F407的函數(shù)庫接口十分精簡,串口的配置也項目程序邏輯框圖程序開始執(zhí)行時首先初始化LED,延時一段時間后初始化串口,同時串口打印相關(guān)的實驗內(nèi)容,信息打印完成后設(shè)置LED初始狀態(tài)為熄滅。然后程序進入主循環(huán),在主循環(huán)中程序不斷等待收據(jù)接收,接收到數(shù)據(jù)后將數(shù)據(jù)從新發(fā)送到PC。數(shù)據(jù)在接收過程中LED3、4閃爍。項目程序邏輯框圖程序開始執(zhí)行時首先初始化LED,延時一段時間項目實現(xiàn)voidusart_init(unsignedintbound){//GPIO端口設(shè)置GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1時鐘

//串口1對應(yīng)引腳復(fù)用映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9復(fù)用為USART1GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10復(fù)用為USART1

usart1初始化項目實現(xiàn)voidusart_init(unsignedi項目實現(xiàn)//USART1端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; //GPIOA9與GPIOA10GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //復(fù)用功能GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //速度50MHzGPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽復(fù)用輸出GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; //上拉GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10//USART1初始化設(shè)置USART_InitStructure.USART_BaudRate=bound;//波特率設(shè)置USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)格式USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個停止位USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗位USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制usart1初始化項目實現(xiàn)//USART1端口配置usart1初始化項目實現(xiàn)

//收發(fā)模式USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);//根據(jù)上述配置初始化串口1 //Usart1NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//串口1中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優(yōu)先級0NVIC_InitStructure.NVIC_IRQChannelSubPriority=1; //子優(yōu)先級1NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE; //IRQ通道使能NVIC_Init(&NVIC_InitStructure); //根據(jù)指定的參數(shù)初始化VIC寄存器、USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//開啟串口1接收中斷USART_Cmd(USART1,ENABLE);//使能串口1 }usart1初始化項目實現(xiàn)//收發(fā)模式usart1初始化項目實現(xiàn)voidUSART1_IRQHandler(void) {if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET){//如果收到數(shù)據(jù)(接收中斷)USART_ClearFlag(USART1,USART_IT_RXNE);//清除接收中斷標(biāo)志if(Usart_len<USART_REC_MAX)USART_RX_BUF[Usart_len++]=USART_ReceiveData(USART1);//將數(shù)據(jù)放入接收緩沖區(qū)

}}串口中斷處理函數(shù)項目實現(xiàn)voidUSART1_IRQHandler(voi項目實現(xiàn)voidclean_usart(void){memset(USART_RX_BUF,0,Usart_len);Usart_len=0;}清除串口緩沖區(qū)項目實現(xiàn)voidclean_usart(void)清除串口項目實現(xiàn)voidusart_send(unsignedchar*s,unsignedcharlen){for(unsignedchari=0;i<len;i++){USART_SendData(USART1,*(s+i));while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);

}}串口1發(fā)送數(shù)據(jù)項目實現(xiàn)voidusart_send(unsignedc項目思考串口通信協(xié)議有什么特點?STM32處理器的串口需要配置哪些參數(shù)?請列舉幾個常見的串口實例?如何驅(qū)動STM32處理器的串口?項目思考串口通信協(xié)議有什么特點?CC2530和STM32嵌入式接口技術(shù)開發(fā)5.7STM32串口通信技術(shù)應(yīng)用開發(fā)CC2530和STM32嵌入式接口技術(shù)開發(fā)5.7STM32串口介紹STM32的USARTSTM32串口庫函數(shù)的使用項目實踐串口介紹串口通信協(xié)議串口通信(SerialCommunications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。串口通信協(xié)議串口通信(SerialCommunicatioSTM32的串口介紹STM32芯片具有多個USART外設(shè)用于串口通訊,它是UniversalSynchronousAsynchronousReceiverandTransmitter的縮寫,即通用同步異步收發(fā)器可以靈活地與外部設(shè)備進行全雙工數(shù)據(jù)交換。STM32的串口介紹STM32芯片具有多個USART外設(shè)USART串口的原理1.串口通用功能引腳TXD:發(fā)送引腳RXD:接收引腳2.串口的數(shù)據(jù)收發(fā)寄存器數(shù)據(jù)接收與發(fā)送寄存器相互獨立,可以實現(xiàn)同步數(shù)據(jù)收發(fā)。3.串口數(shù)據(jù)收發(fā)控制器控制串口的數(shù)據(jù)發(fā)送、接收、喚醒、中斷控制等等。4.波特率生成器對數(shù)據(jù)發(fā)送和接收的波特率進行控制。USART串口的原理1.串口通用功能引腳STM32F4xx系類串口位置STM32芯片的串口眾多,根據(jù)掛載在不同時鐘總線上的串口可分為高速串口和一般串口,又由于控制器的不同可分為同步串口和異步串口。STM32F4xx系類串口位置STM32芯片的串口眾多,根據(jù)USART串口外部中斷請求中斷事件事件標(biāo)志使能控制位發(fā)送數(shù)據(jù)寄存器為空TXETXEIECTS標(biāo)志CTSCTSIE發(fā)送完成TCTCIE準(zhǔn)備好讀取接收到的數(shù)據(jù)RXNERXNEIE檢測到上溢錯誤ORE檢測到空閑線路IDLEIDLEIE奇偶校驗錯誤PEPEIE斷路標(biāo)志LBDLBDIE多緩沖通信中的噪聲標(biāo)志、上溢錯誤和幀錯誤NF/ORE/FEEIE串口是一種常用的通訊手段,當(dāng)數(shù)據(jù)量較大是就會遇到各種各樣的問題,因此對各種問題也要有一定的中斷處理機制。USART串口外部中斷請求中斷事件事件標(biāo)志使能控制位發(fā)送數(shù)據(jù)串口配置流程1.使能端口和時鐘RCC_AHB1PeriphClockCmd(DEBUG_USART_RX_GPIO_CLK|DEBUG_USART_TX_GPIO_CLK,ENABLE);GPIO_Init(DEBUG_USART_RX_GPIO_PORT,&GPIO_InitStructure);2.配置端口復(fù)用GPIO_PinAFConfig(DEBUG_USART_RX_GPIO_PORT,DEBUG_USART_RX_SOURCE,DEBUG_USART_RX_AF);GPIO_PinAFConfig(DEBUG_USART_TX_GPIO_PORT,DEBUG_USART_TX_SOURCE,DEBUG_USART_TX_AF);3.初始化串口相關(guān)參數(shù)USART_Init(DEBUG_USART,&USART_InitStructure);4.使能串口USART_Cmd(DEBUG_USART,ENABLE);STM32串口庫精簡度很高,配置較為簡單,只需配置時鐘、復(fù)用、串口參數(shù)即可。串口配置流程1.使能端口和時鐘RCC_AHB1Periph串口初始化參數(shù)typedefstruct{uint32_tUSART_BaudRate;//波特率波特率越高數(shù)據(jù)傳輸速率越快,但傳輸距離越短uint16_tUSART_WordLength;//字長用于配置數(shù)據(jù)長度,字長通常有5位、6位、7位和8位等uint16_tUSART_StopBits;//停止位作為一條信息的結(jié)束位,有1位和2位兩種情況uint16_tUSART_Parity;//校驗位校驗數(shù)據(jù)在發(fā)送過程中是否出錯uint16_tUSART_Mode;//USART模式用于確認串口的收發(fā)模式uint16_tUSART_HardwareFlowControl;//硬件流控制,通常不配置不使能}USART_InitTypeDef;//串口配置結(jié)構(gòu)體串口配置主要需要注意三個參數(shù),波特率、數(shù)據(jù)長度、停止位和校驗位即可,在使用串口時另一個串口接口要于此保持一致。串口初始化參數(shù)typedefstruct{串口配置主要需項目場景串口是工業(yè)主板上一種非常通用設(shè)備通信的協(xié)議,大多數(shù)工業(yè)主板包含兩個以上基于RS-232的串口。串口是按位(bit)發(fā)送和接收字節(jié),速度要比按字節(jié)(byte)的并行通信慢,但串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù),能夠簡單實現(xiàn)遠距離通信。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。項目場景串口是工業(yè)主板上一種非常通用設(shè)備通信的協(xié)議,大多數(shù)工任務(wù)目標(biāo)使用STM32處理器模擬設(shè)備與中央控制臺間的數(shù)據(jù)交互。STM32與PC及通過串口相連,通過PC機上機向STM32處理器發(fā)送數(shù)據(jù)。STM32處理器接受到數(shù)據(jù)后回顯,STM32處理器當(dāng)通過串口接受到了特定的字符時向PC機打印接受到的所有數(shù)據(jù),以此實現(xiàn)STM32處理器與PC機的交互。任務(wù)目標(biāo)使用STM32處理器模擬設(shè)備與中央控制臺間的數(shù)據(jù)交互項目分析STM32F407的函數(shù)庫接口十分精簡,串口的配置也同樣如此。通常STM32F407的的結(jié)構(gòu)體配置主要注意幾個參數(shù)即可,即波特率、數(shù)據(jù)位、校驗位和停止位。在使用串口是需要配置相關(guān)的PC端的串口上位機,配置上位機時要注意配置的串口參數(shù)要與芯片本身配置的串口參數(shù)一致。項目分析STM32F407的函數(shù)庫接口十分精簡,串口的配置也項目程序邏輯框圖程序開始執(zhí)行時首先初始化LED,延時一段時間后初始化串口,同時串口打印相關(guān)的實驗內(nèi)容,信息打印完成后設(shè)置LED初始狀態(tài)為熄滅。然后程序進入主循環(huán),在主循環(huán)中程序不斷等待收據(jù)接收,接收到數(shù)據(jù)后將數(shù)據(jù)從新發(fā)送到PC。數(shù)據(jù)在接收過程中LED3、4閃爍。項目程序邏輯框圖程序開始執(zhí)行時首先初始化LED,延時一段時間項目實現(xiàn)voidusart_init(unsignedintbound){//GPIO端口設(shè)置GPIO_InitTypeDefGPIO_InitStructure;USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1時鐘

//串口1對應(yīng)引腳復(fù)用映射GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9復(fù)用為USART1GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10復(fù)用為USART1

usart1初始化項目實現(xiàn)voidusart_init(unsignedi項目實現(xiàn)//USART1端口配置GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10; //GPIOA9與GPIOA10GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF; //復(fù)用功能GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; //速度50MHzGPIO_InitStructure.GPIO_OType=GPIO_OType_PP; //推挽復(fù)用輸出GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP; //上拉GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA9,PA10//USART1初始化設(shè)置USART_InitStructure.USART_BaudRate=bound;//波特率設(shè)置USART_InitStructure.USART_WordLength=USART_WordLength_8b;//字長為8位數(shù)據(jù)格式USART_InitStructure.USART_StopBits=USART_StopBits_1;//一個停止位USART_InitStructure.USART_Parity=USART_Parity_No;//無奇偶校驗位USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//無硬件數(shù)據(jù)流控制usart1初始化項目實現(xiàn)//USART1端口配置usart1初始化項目實現(xiàn)

//收發(fā)模式USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;USART_Init(USART1,&USART_InitStructure);//根據(jù)上述配置初始化串口1 //Usart1NVIC配置NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;//串口1中斷通道NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//搶占優(yōu)先級0NV

溫馨提示

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

評論

0/150

提交評論