USART串口--浅谈
来源:互联网 发布:淘宝店铺租赁平台 编辑:程序博客网 时间:2024/06/05 17:00
tips:在使用printf重定义前,切记要在 Target里勾选 Use MicroLIB!!!
#include "main.h"void USART_Config( ){ GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; NVIC_InitTypeDef NVIC_InitStruct; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1,ENABLE); //时钟的初始化 GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStruct.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10; GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStruct); GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE); USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_WordLength = USART_WordLength_8b;//配置rs232协议数据位的位宽 USART_InitStruct.USART_StopBits = USART_StopBits_1; //配置rs232协议的停止位的位宽 USART_InitStruct.USART_Parity = USART_Parity_No; //配置rs232协议奇偶校验位 USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//配置rs232协议的硬件流控制 USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//使能接收和发送 USART_Init(USART1,&USART_InitStruct); NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1; NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStruct); //打开USART1接收中断 USART_ITConfig(USART1,USART_IT_RXNE,ENABLE); //使能USART1 USART_Cmd(USART1,ENABLE); }//回显void USART_Echo(void){ u8 ch; while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);//等待接收数据 ch = USART_ReceiveData(USART1);//把接收到的数据保存到ch中 while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);//等待上次发送数据发送完成 USART_SendData(USART1,ch);//把ch中的数据发送到电脑}//重新定义printfint fputc(int ch,FILE *p){ USART_SendData(USART1,ch); //等待发送完成 while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET); return ch;}//输出字符串void USART_PutChar(USART_TypeDef* USARTx,uint8_t Data){ USART_SendData(USARTx,Data); while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);}void USART_PutStr(USART_TypeDef* USARTx,uint8_t *str){ while('\0' != *str) { USART_PutChar(USARTx,*str); str++; }}//中断服务函数void USART1_IRQHandler(void){ uint8_t ucTemp; if(USART_GetFlagStatus(USART1,USART_IT_RXNE) !=RESET) { ucTemp = USART_ReceiveData(USART1); USART_SendData(USART1,ucTemp); }}
阅读全文
0 0
- USART串口--浅谈
- USART串口总结2
- stm32 USART串口
- USART---串口发送数据
- STM32 串口USART 通信
- USART---串口发送数据
- STM32----------串口通信(USART)
- STM32串口USART
- 串口通信(USART)
- USART串口通信配置
- usart串口使用
- 【PIC32MZ】Usart串口通讯
- STM32串口USART通讯
- USART串口的使用
- stm32 usart 串口
- STM32串口USART通讯
- STM32 USART串口初始化
- USART--串口通信
- Docker容器内外互相拷贝文件
- 嗯....零乱知识点map和字符串转换的
- 多个Fragment之间的切换,该用什么方法呢?
- Android中为什么使用@override
- Nginx配置负载均衡
- USART串口--浅谈
- 文件读取
- 矩阵 乘法
- Java——String类
- static std::string jstring2string (jstring str)
- MyBatis Generator超级简单配置
- android 开发输出日志打印信息
- 超过 130 个你需要了解的 vim 命令
- interproscan安装及详细设置