




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
stm32初始化三個串口STM32系列基于專為要求高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計的ARMCortex-M3內(nèi)核,按內(nèi)核架構(gòu)分為不同產(chǎn)品:其中STM32F系列有:STM32F103“增強型”系列STM32F101“基本型”系列STM32F105、STM32F107“互聯(lián)型”系列增強型系列時鐘頻率達到72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品?;拘蜁r鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是32位產(chǎn)品用戶的最佳選擇。兩個系列都內(nèi)置32K到128K的閃存,不同的是SRAM的最大容量和外設(shè)接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,相當于0.5mA/MHz。stm32初始化三個串口**************************************************/#include“serial.h”intfputc(intch,F(xiàn)ILE*p)//在使用printf時系統(tǒng)自動條用此函數(shù){USART_SendData(USART2,(u8)ch);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);returnch;}/********************************************************************************函數(shù)名:serial_init*函數(shù)功能:IO端口及串口1,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/voidserial1_init(u32bt){GPIO_InitTypeDefGPIO_InitStructure;//聲明一個結(jié)構(gòu)體變量,用來初始化GPIONVIC_InitTypeDefNVIC_InitStructure;//中斷結(jié)構(gòu)體定義USART_InitTypeDefUSART_InitStructure;//串口結(jié)構(gòu)體定義RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1|RCC_APB2Periph_AFIO,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//TXGPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//RXGPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);USART_InitStructure.USART_BaudRate=bt;//波特率設(shè)置為btUSART_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;USART_Init(USART1,&USART_InitStructure);USART_Cmd(USART1,ENABLE);USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能或者失能指定的USART中斷接收中斷USART_ClearFlag(USART1,USART_FLAG_TC);//清除USARTx的待處理標志位}/********************************************************************************函數(shù)名:serial2_init*函數(shù)功能:IO端口及串口2,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/voidserial2_init(u32bt){USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;//聲明一個結(jié)構(gòu)體變量,用來初始化GPIO//使能串口的RCC時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2|RCC_APB2Periph_GPIOA,ENABLE);//串口使用的GPIO口配置//ConfigureUSART2Rx(PA.3)asinputfloatingGPIO_InitStructure.GPIO_Pin=GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);//ConfigureUSART2Tx(PA.2)asalternatefunctionpush-pullGPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);//配置串口USART_InitStructure.USART_BaudRate=bt;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;//ConfigureUSART2USART_Init(USART2,&USART_InitStructure);//配置串口2//EnableUSART1Receiveinterrupts使能串口接收中斷USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//串口發(fā)送中斷在發(fā)送數(shù)據(jù)時開啟//USART_ITConfig(USART2,USART_IT_TXE,ENABLE);//EnabletheUSART2USART_Cmd(USART2,ENABLE);//使能串口1//串口中斷配置//ConfiguretheNVICPreemptionPriorityBitsNVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//EnabletheUSART2InterruptNVIC_InitStructure.NVIC_IRQChannel=USART2_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}/********************************************************************************函數(shù)名:serial1_sned_char*函數(shù)功能:串口1發(fā)送一字節(jié)*輸入:無*輸出:無*******************************************************************************/voidserial1_sned_char(u8temp){USART_SendData(USART1,(u8)temp);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);}/********************************************************************************函數(shù)名:serial1_sned_buff*函數(shù)功能:串口1發(fā)送一字符串*輸入:無*輸出:無*******************************************************************************/voidserial1_sned_buff(u8buf[],u32len){u32i;for(i=0;i《len;i++)serial1_sned_char(buf[i]);}/********************************************************************************函數(shù)名:serial2_sned_char*函數(shù)功能:串口2發(fā)送一字節(jié)*輸入:無*輸出:無*******************************************************************************/voidserial2_sned_char(u8temp){USART_SendData(USART2,(u8)temp);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);}/********************************************************************************函數(shù)名:serial2_sned_buff*函數(shù)功能:串口2發(fā)送一字符串*輸入:無*輸出:無*******************************************************************************/voidserial2_sned_buff(u8buf[],u32len){u32i;for(i=0;i《len;i++)serial2_sned_char(buf[i]);}//--------------------------------------------------------------------------------------------------------/********************************************************************************函數(shù)名:serial3_init*函數(shù)功能:IO端口及串口3,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/voidserial3_init(u32bt){USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;//聲明一個結(jié)構(gòu)體變量,用來初始化GPIO//使能串口的RCC時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//使能UART3所在GPIOB的時鐘RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);//串口使用的GPIO口配置//ConfigureUSART2Rx(PB.11)asinputfloatingGPIO_InitStructure.GPIO_Pin=GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB,&GPIO_InitStructure);//ConfigureUSART2Tx(PB.10)asalternatefunctionpush-pullGPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);//配置串口USART_InitStructure.USART_BaudRate=bt;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;//ConfigureUSART3USART_Init(USART3,&USART_InitStructure);//配置串口3//EnableUSART1Receiveinterrupts使能串口接收中斷USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);//串口發(fā)送中斷在發(fā)送數(shù)據(jù)時開啟//USART_ITConfig(USART2,USART_IT_TXE,ENABLE);//EnabletheUSART3USART_Cmd(USART3,ENABLE);//使能串口3//串口中斷配置//ConfiguretheNVICPreemptionPriorityBitsNVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);//EnabletheUSART3InterruptNVIC_InitStructure.NVIC_IRQChannel=USART3_IRQn;NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;NVIC_Init(&NVIC_InitStructure);}/********************************************************************************函數(shù)名:serial3_sned_char*函數(shù)功能:串口3發(fā)送一字節(jié)*輸入:無*輸出:無*******************************************************************************/voidserial3_sned_char(u8temp){USART_SendData(USART3,(u8)temp);while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);}/********************************************************************************函數(shù)名:serial3_sned_buff*函數(shù)功能:串口3發(fā)送一字符串*輸入:無*輸出:無*******************************************************************************/voidserial3_sned_buff(u8buf[],u32len){u32i;for(i=0;i《len;i++)serial3_sned_char(buf[i]);serial.h[java]viewplaincopy**************************************************/#ifndef_serial_#define_serial_#include“stm32f10x.h”#include“stdio.h”//------------------------------------------------------------------------------------------/********************************************************************************函數(shù)名:fputc*函數(shù)功能:printf會調(diào)用*輸入:無*輸出:無*******************************************************************************/intfputc(intch,F(xiàn)ILE*p);/********************************************************************************函數(shù)名:serial1_init*函數(shù)功能:IO端口及串口1,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/voidserial1_init(u32bt);/********************************************************************************函數(shù)名:serial1_sned_char*函數(shù)功能:串口1發(fā)送一字節(jié)*輸入:無*輸出:無*******************************************************************************/voidserial1_sned_char(u8temp);/********************************************************************************函數(shù)名:serial1_sned_buff*函數(shù)功能:串口1發(fā)送一字符串*輸入:無*輸出:無*******************************************************************************/voidserial1_sned_buff(u8buf[],u32len);//-----------------------------------------------------------------------------------------------------/********************************************************************************函數(shù)名:serial2_init*函數(shù)功能:IO端口及串口2,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/voidserial2_init(u32bt);/********************************************************************************函數(shù)名:serial2_sned_char*函數(shù)功能:串口2發(fā)送一字節(jié)*輸入:無*輸出:無*******************************************************************************/voidserial2_sned_char(u8temp);/********************************************************************************函數(shù)名:serial2_sned_buff*函數(shù)功能:串口2發(fā)送一字符串*輸入:無*輸出:無*******************************************************************************/voidserial2_sned_buff(u8buf[],u32len);//--------------------------------------------------------------------------------------------------------/********************************************************************************函數(shù)名:serial3_init*函數(shù)功能:IO端口及串口3,時鐘初始化函數(shù)*輸入:無*輸出:無*******************************************************************************/vo
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年沈丘往年面試試題及答案
- 2025年python軟件測試面試題及答案
- 2025年碎步測量測試題及答案
- 2025年大白梨汽水測試題及答案
- 2025年公文格式小測試題及答案
- 2025年土壤污染工程試題及答案
- 創(chuàng)新創(chuàng)業(yè)全國管理決策模擬大賽安徽賽
- 2025年單招護理面試題及答案
- 2025年前期報建專員筆試題及答案
- 2025年杭州二模化學試題及答案
- 醫(yī)療質(zhì)量管理制度相關(guān)知識考試試題
- 醫(yī)院病歷體格檢查表范本
- 二次供水設(shè)備保養(yǎng)維修方案(完整)
- 【直播帶貨的模式研究國內(nèi)外文獻綜述4300字(論文)】
- 高中英語-40篇英語短文搞定高中英語3500個單詞
- CIE-15-2004-Colorimetry原版完整文件
- 2023年新改版蘇教版五年級下冊科學全冊精編知識點(附問答題總結(jié))
- 杭州國際動漫節(jié)策劃書
- 2023年上海16區(qū)高考一模英語聽力合集附音頻含答案含原文
- 電氣自動化課件
- 報價單模板(打印版)
評論
0/150
提交評論