




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
stm32初始化三个串口STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARMCortex-M3内核,按内核架构分为不同产品:其中STM32F系列有:STM32F103“增强型”系列STM32F101“基本型”系列STM32F105、STM32F107“互联型”系列增强型系列时钟频率达到72MHz,是同类产品中性能最高的产品。基本型时钟频率为36MHz,以16位产品的价格得到比16位产品大幅提升的性能,是32位产品用户的最佳选择。两个系列都内置32K到128K的闪存,不同的是SRAM的最大容量和外设接口的组合。时钟频率72MHz时,从闪存执行代码,STM32功耗36mA,相当于0.5mA/MHz。stm32初始化三个串口**************************************************/#include“serial.h”intfputc(intch,FILE*p)//在使用printf时系统自动条用此函数{USART_SendData(USART2,(u8)ch);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);returnch;}/********************************************************************************函数名:serial_init*函数功能:IO端口及串口1,时钟初始化函数*输入:无*输出:无*******************************************************************************/voidserial1_init(u32bt){GPIO_InitTypeDefGPIO_InitStructure;//声明一个结构体变量,用来初始化GPIONVIC_InitTypeDefNVIC_InitStructure;//中断结构体定义USART_InitTypeDefUSART_InitStructure;//串口结构体定义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;//波特率设置为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的待处理标志位}/********************************************************************************函数名:serial2_init*函数功能:IO端口及串口2,时钟初始化函数*输入:无*输出:无*******************************************************************************/voidserial2_init(u32bt){USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;//声明一个结构体变量,用来初始化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);//串口发送中断在发送数据时开启//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);}/********************************************************************************函数名:serial1_sned_char*函数功能:串口1发送一字节*输入:无*输出:无*******************************************************************************/voidserial1_sned_char(u8temp){USART_SendData(USART1,(u8)temp);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);}/********************************************************************************函数名:serial1_sned_buff*函数功能:串口1发送一字符串*输入:无*输出:无*******************************************************************************/voidserial1_sned_buff(u8buf[],u32len){u32i;for(i=0;i《len;i++)serial1_sned_char(buf[i]);}/********************************************************************************函数名:serial2_sned_char*函数功能:串口2发送一字节*输入:无*输出:无*******************************************************************************/voidserial2_sned_char(u8temp){USART_SendData(USART2,(u8)temp);while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);}/********************************************************************************函数名:serial2_sned_buff*函数功能:串口2发送一字符串*输入:无*输出:无*******************************************************************************/voidserial2_sned_buff(u8buf[],u32len){u32i;for(i=0;i《len;i++)serial2_sned_char(buf[i]);}//--------------------------------------------------------------------------------------------------------/********************************************************************************函数名:serial3_init*函数功能:IO端口及串口3,时钟初始化函数*输入:无*输出:无*******************************************************************************/voidserial3_init(u32bt){USART_InitTypeDefUSART_InitStructure;NVIC_InitTypeDefNVIC_InitStructure;GPIO_InitTypeDefGPIO_InitStructure;//声明一个结构体变量,用来初始化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);//串口发送中断在发送数据时开启//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);}/********************************************************************************函数名:serial3_sned_char*函数功能:串口3发送一字节*输入:无*输出:无*******************************************************************************/voidserial3_sned_char(u8temp){USART_SendData(USART3,(u8)temp);while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);}/********************************************************************************函数名:serial3_sned_buff*函数功能:串口3发送一字符串*输入:无*输出:无*******************************************************************************/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”//------------------------------------------------------------------------------------------/********************************************************************************函数名:fputc*函数功能:printf会调用*输入:无*输出:无*******************************************************************************/intfputc(intch,FILE*p);/********************************************************************************函数名:serial1_init*函数功能:IO端口及串口1,时钟初始化函数*输入:无*输出:无*******************************************************************************/voidserial1_init(u32bt);/********************************************************************************函数名:serial1_sned_char*函数功能:串口1发送一字节*输入:无*输出:无*******************************************************************************/voidserial1_sned_char(u8temp);/********************************************************************************函数名:serial1_sned_buff*函数功能:串口1发送一字符串*输入:无*输出:无*******************************************************************************/voidserial1_sned_buff(u8buf[],u32len);//-----------------------------------------------------------------------------------------------------/********************************************************************************函数名:serial2_init*函数功能:IO端口及串口2,时钟初始化函数*输入:无*输出:无*******************************************************************************/voidserial2_init(u32bt);/********************************************************************************函数名:serial2_sned_char*函数功能:串口2发送一字节*输入:无*输出:无*******************************************************************************/voidserial2_sned_char(u8temp);/********************************************************************************函数名:serial2_sned_buff*函数功能:串口2发送一字符串*输入:无*输出:无*******************************************************************************/voidserial2_sned_buff(u8buf[],u32len);//--------------------------------------------------------------------------------------------------------/********************************************************************************函数名:serial3_init*函数功能:IO端口及串口3,时钟初始化函数*输入:无*输出:无*******************************************************************************/vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于“脾藏意”和Treg细胞外泌体研究补中益气汤改善AIT认知损伤机制
- 硅溶胶-苯丙乳液复合涂层钢筋性能研究
- 班级一日常规管理
- 慢喉痹病护理
- 幼儿园托班健康管理要点
- 大健康连锁店商业计划书
- 2025年黑龙江省绥化市中考招生考试数学真题试卷(真题+答案)
- 预防职业病课件
- 预防接种知识课堂课件
- 《电子产品制造技术》课件-第3章 电子产品焊接工艺
- 柔性防护网施工方案
- 网络安全论文参考文献,参考文献
- WH/T 78.6-2017演出安全第6部分:舞美装置安全
- GB/T 9867-2008硫化橡胶或热塑性橡胶耐磨性能的测定(旋转辊筒式磨耗机法)
- 小学古诗词教学策略课件
- 不良事件报告与防范
- 基业长青中国家族企业的东方智慧与长青之道
- 【吉尔吉斯和国经商指南-法律篇】
- Q∕SY 01006-2016 二氧化碳驱注气井保持井筒完整性推荐作法
- 质量风险管理监理实施细则
- 嵌入式软件助理工程师认证考试试题题库
评论
0/150
提交评论