已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
usart.h : 头文件/*-*/#ifndef _USART_H#define_USART_H/* Include -*/#include stm32f10x.h#include #include /#include /* Define & Typedef -*/* Macro Switch -*/*注:以下宏供移植时选择和修改 */#define USE_RS4852/使用RS485#define USE_USART1/使用串口1#define USE_USART2/使用串口2#define USE_USART3/使用串口3/#define USE_UART4/使用串口4/#define USE_UART5/使用串口5#define MAX_LEN 256/打印函数字符串输入最大字节数#define PUTX fputc/fputc重定向函数#ifdef USE_RS485#define RS485 0#define RS232 1#define RS24_CONFIG RS24_Configration/RS485-232选择控制端口配置函数#define RSCHOOSEFLAG SeM.Bit.RSChooseFlag/RS485-232选择标志#define RS485_T GPIO_SetBits(GPIOA,GPIO_Pin_1)/RS485进入发送状态#define RS485_R GPIO_ResetBits(GPIOA,GPIO_Pin_1)/RS485进入接收状态#endif/* Function Declaration -*/#ifdef USE_USART1void USART1_Configration(void); /串口1端口配置 void USART1_NVIC_Configuration(void);/串口1中断配置void USART1_Config(void); /串口1初始化int USART1_printf(char* str,.);/串口1打印函数#endif#ifdef USE_USART2void USART2_Configration(void); /串口2端口配置 void USART2_NVIC_Configuration(void);/串口2中断配置void USART2_Config(void); /串口2初始化int USART2_printf(char* str,.);/串口2打印函数#endif#ifdef USE_USART3void USART3_Configration(void); /串口3端口配置 void USART3_NVIC_Configuration(void);/串口3中断配置void USART3_Config(void); /串口3初始化int USART3_printf(char* str,.);/串口3打印函数#endif#ifdef USE_UART4void UART4_Configration(void); /串口4端口配置 void UART4_NVIC_Configuration(void);/串口4中断配置void UART4_Config(void); /串口4初始化int UART4_printf(char* str,.);/串口4打印函数#endif#ifdef USE_UART5void UART5_Configration(void); /串口5端口配置 void UART5_NVIC_Configuration(void);/串口5中断配置void UART5_Config(void); /串口5初始化int UART5_printf(char* str,.);/串口5打印函数#endif#ifdef USE_RS485void RS24_Configration(u8 flag);/RS232-485选择控制端口配置#endifvoid USART_Config(void); /串口初始化int fputc(int ch, FILE *f);/文件流字符打印函数(重定向到串口3)#endif /* _USART_H */*-*/usart.c : C文件/*-*/* (C) COPYRIGHT 2014xxxxxx * * 文件名 :usart.c * 描述 :将printf函数重定向到USART3。这样就可以用printf函数将单片机的数据 * 打印到PC上的超级终端或串口调试助手。 * 实验平台:xxxxxxx * 硬件连接:- * | PA9 - USART1(Tx) PA2 - USART2(Tx) PB10 - USART3(Tx) | * | PA10 - USART1(Rx) PA3 - USART2(Rx)PB11 - USART3(Rx) | *|PC10 - UART4(Tx)PC11 - UART5(Tx)PA0 - RS232-485 choose | *|PC11 - UART4(Rx)PD2 - UART5(Rx)PA1 - RS485 Tx-Rx choose | * - * 库版本 :ST3.5.0 野火相关源码 * * 作者 :xxxxxx * 时间 :2014.6.24*/#include usart.h#include value.h/* USART1 -*/#ifdef USE_USART1/* * 函数名:USART1_Config * 描述 :USART1 GPIO 配置,工作模式配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART1_Configration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config USART1 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);/* USART1 GPIO config */* Configure USART1 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART1 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);/* USART1 mode config */USART_InitStructure.USART_BaudRate = 115200;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;USART_Init(USART1, &USART_InitStructure);USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);USART_Cmd(USART1, ENABLE);/* * 函数名:USART1_NVIC_Configuration * 描述 :USART1中断优先级配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART1_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* * 函数名:USART1_Config * 描述 :USART1初始化 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART1_Config(void)USART1_Configration();USART1_NVIC_Configuration();/* * 函数名:USART1_printf * 描述 :USART1打印函数 * 输入 :格式化字符串指针*str,参量表 * 输出 : 打印字符串的长度,如果长度为-1,则表示打印失败 * 调用 :外部调用 */int USART1_printf(char* str,.)long ret = 0;char tempMAX_LEN = 0;char *p = NULL;va_list list;p = temp;va_start(list,str); ret = vsprintf(temp,str,list); if(ret = MAX_LEN)return -1;#ifdef USE_RS485#if USE_RS485 = 1RS485_T;#endif#endifwhile(*p+ != )USART_SendData(USART1, (u8)*p);while (!(USART1-SR & USART_FLAG_TXE);#ifdef USE_RS485#if USE_RS485 = 1RS485_R;#endif#endifreturn ret;#endif/*-*/* USART2 -*/#ifdef USE_USART2/* * 函数名:USART2_Config * 描述 :USART2 GPIO 配置,工作模式配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART2_Configration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config USART2 clock */RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART2 | RCC_APB2Periph_GPIOA, ENABLE);/* USART2 GPIO config */* Configure USART2 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure); /* Configure USART2 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA, &GPIO_InitStructure);/* USART2 mode config */USART_InitStructure.USART_BaudRate = 9600;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;USART_Init(USART2, &USART_InitStructure);USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);USART_Cmd(USART2, ENABLE);/* * 函数名:USART2_NVIC_Configuration * 描述 :USART2中断优先级配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART2_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* * 函数名:USART2_Config * 描述 :USART2初始化 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART2_Config(void)USART2_Configration();USART2_NVIC_Configuration();/* * 函数名:USART2_printf * 描述 :USART2打印函数 * 输入 :格式化字符串指针*str,参量表 * 输出 : 打印字符串的长度,如果长度为-1,则表示打印失败 * 调用 :外部调用 */int USART2_printf(char* str,.)long ret = 0;char tempMAX_LEN = 0;char *p = NULL;va_list list;p = temp;va_start(list,str); ret = vsprintf(temp,str,list); if(ret = MAX_LEN)return -1;#ifdef USE_RS485#if USE_RS485 = 2RS485_T;#endif#endifwhile(*p+ != )USART_SendData(USART2, (u8)*p);while (!(USART2-SR & USART_FLAG_TXE);#ifdef USE_RS485#if USE_RS485 = 2RS485_R;#endif#endifreturn ret;#endif/*-*/* USART3 -*/#ifdef USE_USART3/* * 函数名:USART3_Config * 描述 :USART3 GPIO 配置,工作模式配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART3_Configration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config USART3 clock */RCC_APB2PeriphClockCmd(RCC_APB1Periph_USART3 | RCC_APB2Periph_GPIOB, ENABLE);/* USART3 GPIO config */* Configure USART3 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure USART3 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);/* USART3 mode config */USART_InitStructure.USART_BaudRate = 9600;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;USART_Init(USART3, &USART_InitStructure);USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);USART_Cmd(USART3, ENABLE);/* * 函数名:USART3_NVIC_Configuration * 描述 :USART3中断优先级配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART3_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* * 函数名:USART3_Config * 描述 :USART3初始化 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void USART3_Config(void)USART3_Configration();USART3_NVIC_Configuration();/* * 函数名:USART3_printf * 描述 :USART3打印函数 * 输入 :格式化字符串指针*str,参量表 * 输出 : 打印字符串的长度,如果长度为-1,则表示打印失败 * 调用 :外部调用 */int USART3_printf(char* str,.)long ret = 0;char tempMAX_LEN = 0;char *p = NULL;va_list list;p = temp;va_start(list,str); ret = vsprintf(temp,str,list); if(ret = MAX_LEN)return -1;#ifdef USE_RS485#if USE_RS485 = 3RS485_T;#endif#endifwhile(*p+ != )USART_SendData(USART3, (u8)*p);while (!(USART3-SR & USART_FLAG_TXE);#ifdef USE_RS485#if USE_RS485 = 3RS485_R;#endif#endifreturn ret;#endif/*-*/* UART4 -*/#ifdef USE_UART4/* * 函数名:UART4_Config * 描述 :UART4 GPIO 配置,工作模式配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void UART4_Configration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config UART4 clock */RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART4 | RCC_APB2Periph_GPIOC, ENABLE);/* UART4 GPIO config */* Configure UART4 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure UART4 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure);/* UART4 mode config */USART_InitStructure.USART_BaudRate = 9600;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;USART_Init(UART4, &USART_InitStructure);USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);USART_Cmd(UART4, ENABLE);/* * 函数名:UART4_NVIC_Configuration * 描述 :UART4中断优先级配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void UART4_NVIC_Configuration(void)NVIC_InitTypeDef NVIC_InitStructure; /* Configure the NVIC Preemption Priority Bits */ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_3);/* Enable the USARTy Interrupt */NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;NVIC_Init(&NVIC_InitStructure);/* * 函数名:UART4_Config * 描述 :UART4初始化 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void UART4_Config(void)UART4_Configration();UART4_NVIC_Configuration();/* * 函数名:UART4_printf * 描述 :UART4打印函数 * 输入 :格式化字符串指针*str,参量表 * 输出 : 打印字符串的长度,如果长度为-1,则表示打印失败 * 调用 :外部调用 */int UART4_printf(char* str,.)long ret = 0;char tempMAX_LEN = 0;char *p = NULL;va_list list;p = temp;va_start(list,str); ret = vsprintf(temp,str,list); if(ret = MAX_LEN)return -1;#ifdef USE_RS485#if USE_RS485 = 4RS485_T;#endif#endifwhile(*p+ != )USART_SendData(UART4, (u8)*p);while (!(UART4-SR & USART_FLAG_TXE);#ifdef USE_RS485#if USE_RS485 = 4RS485_R;#endif#endifreturn ret;#endif/*-*/* UART5 -*/#ifdef USE_UART5/* * 函数名:UART5_Config * 描述 :UART5 GPIO 配置,工作模式配置 * 输入 :无 * 输出 : 无 * 调用 :外部调用 */void UART5_Configration(void)GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;/* config UART5 clock */RCC_APB2PeriphClockCmd(RCC_APB1Periph_UART5 | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD, ENABLE);/* UART5 GPIO config */* Configure UART5 Tx (PA.09) as alternate function push-pull */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure); /* Configure UART5 Rx (PA.10) as input floating */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心理咨询师(初级)备考题库及答案解析
- 2025年供应链管理师(中级)备考题库及答案解析
- 商铺租赁合同续签补充协议2025年修订版
- 商铺租赁2025年消防安全协议
- 第二课小红书带货之流量分发2
- 全职员工2025年岗位变动合同协议
- 旅行社导游服务合同协议2025
- 2025年绩效数据收集与分析考试试题及答案
- 多肉种苗授权合同范本
- 国内租赁挖机合同范本
- 行政自学考试试题及答案
- 2025年湖南邵阳武冈市城乡供水有限公司招聘5人笔试历年参考题库附带答案详解(3卷合一)
- 烟草行业新员工入职培训
- 审计咨询服务整体方案
- GB/T 31971.3-2025船舶与海上技术海上环境保护:撇油器性能试验第3部分:高黏度油
- 《土木工程智能施工》课件 第3章 土方作业辅助工程-土壁支护2
- 艺人独家经纪合同(标准版)
- 福建省银行业专业人员初级职业资格考试(银行业法律法规与综合能力)试题及答案(2025年)
- 2025算力并网技术要求
- 商业银行统一报表平台:设计理念、技术实现与实践成效
- 《守望成长法治护航》法制教育主题班会
评论
0/150
提交评论