当前位置: 首页 > news >正文

嵌入式STM32学习——串口USART 2.1(串口发送字符串和字符)

因为标准库中没有直接输出字符串的函数,因此便需要我们自己创建一个直接输出字符串的函数。

usart.h

#ifndef USART_H_
#define USART_H_void my_usart_init(void);void My_Usart_Send_Byte( USART_TypeDef* USARTx, uint16_t Data);void My_Usart_Send_Sting( USART_TypeDef* USARTx, char * string);#endif

usart.c

#include"stm32f10x.h"
#include"usart.h"void my_usart_init(void)
{GPIO_InitTypeDef GPIOInitstruct;USART_InitTypeDef Usart_initstruct;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_USART1, ENABLE);//A9GPIOInitstruct.GPIO_Pin = GPIO_Pin_9;GPIOInitstruct.GPIO_Mode = GPIO_Mode_AF_PP;GPIOInitstruct.GPIO_Speed = GPIO_Speed_10MHz;GPIO_Init(GPIOA,&GPIOInitstruct);//A10GPIOInitstruct.GPIO_Pin =GPIO_Pin_10;GPIOInitstruct.GPIO_Mode =GPIO_Mode_IPU;GPIO_Init(GPIOA,&GPIOInitstruct);//A10Usart_initstruct.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;		//模式								Usart_initstruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;		//硬件控制流功能,通过其他线路来协调数据传输,防止数据溢出Usart_initstruct.USART_BaudRate = 115200;						//波特率Usart_initstruct.USART_Parity = USART_Parity_No;		//校验位Usart_initstruct.USART_StopBits = USART_StopBits_1;  		//Í停止位Usart_initstruct.USART_WordLength = USART_WordLength_8b;  		//数据位USART_Init(USART1,&Usart_initstruct);USART_Cmd(USART1,ENABLE);			//使能串口外设																			}
//字符输出函数
void My_Usart_Send_Byte(USART_TypeDef* USARTx, uint16_t Data)
{USART_SendData(USARTx,  Data);while( USART_GetFlagStatus( USARTx,  USART_FLAG_TXE) == RESET);}//字符串输出函数
void My_Usart_Send_Sting( USART_TypeDef* USARTx, char * string)
{uint16_t i=0;do{My_Usart_Send_Byte(USARTx,*(string+i));i++;}while(*(string+i) != '\0');while( USART_GetFlagStatus( USARTx,  USART_FLAG_TC) == RESET);
}

main.c

#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"
#include "shake.h"
#include "usart.h"
void delay(uint16_t time) 
{uint16_t i=0;while(time--){i =12000;while(i--);}}int  main()
{my_usart_init();My_Usart_Send_Byte( USART1,  'A');My_Usart_Send_Byte( USART1,  'B');My_Usart_Send_Byte( USART1,  'C');My_Usart_Send_Sting( USART1,  "\r\n");        //回车换行My_Usart_Send_Sting(USART1 , "fei \r\n");while(1){}		
}

结果展示

http://www.xdnf.cn/news/576991.html

相关文章:

  • 应用分享 | 软件定义架构如何满足GNSS模拟测试的开放性需求?
  • JDK9~17语法新特性全览:Java语言的持续进化
  • Python数据可视化高级实战之二——热力图绘制探究
  • C++ 输出流格式控制
  • 起重的技术
  • wd软件安装
  • origin绘图之【如何将横坐标/x设置为文字、字母形式】
  • 升级SpringBoot2到3导致的WebServices升级
  • 数字化,一个泛化的概念
  • 使用Mathematica生成随机曼陀罗花
  • vue3请求设置responseType: ‘blob‘,导致失败后获取不到返回信息
  • 基于vue框架的动漫论坛g2392(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • ISO 26262-5 硬件验证
  • Python雷达图实战教程:从入门到精通
  • 磁盘分区与挂载——笔记
  • 深入理解Java虚拟机之垃圾收集器篇(垃圾回收器的深入解析待完成TODO)
  • 框架与组件版本备忘
  • LlamaIndex
  • Keepalived 基于 VRRP 的高可用设计与故障排查
  • 学习日记-day12-5.21
  • 牛客网 NC16407 题解:托米航空公司的座位安排问题
  • 操作系统 第四章 -1
  • 链表-反转链表
  • JUC并发编程(下)
  • P1090 [NOIP 2004 提高组] 合并果子
  • SpringBoot3集成Oauth2.1——3access_token使用
  • 大模型如何助力数学可视化?
  • 47道ES67高频题整理(附答案背诵版)
  • LVS_DR集群的基本原理和相关配置
  • 算法总结:双指针技巧