首页 > 其他分享 >在stm32中使用printf

在stm32中使用printf

时间:2022-12-15 19:23:32浏览次数:52  
标签:printf NVIC USART 使用 stm32 InitStructure InitStruct GPIO USART1

记录使用printf的方法

1.配置GPIO

    GPIO_InitTypeDef  GPIO_InitStruct;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	RCC_APB1PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART时钟
	GPIO_InitStruct.GPIO_Pin =GPIO_Pin_9;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//TX复用推挽
	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;//RX浮空输入
	GPIO_Init(GPIOA, &GPIO_InitStruct);	
	

2.配置中断

NVIC_InitTypeDef NVIC_InitStruct;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStruct);

3.配置USART

    USART_InitTypeDef USART_InitStructure;
    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(USART2, &USART_InitStructure);

4.使能中断

USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//使能接收中断
USART_Cmd(USART1,ENABLE);

5.重定向fputc fgetc

int fputc(int ch,FILE* f)
{
  USART_SendData(USART1,(uint8_t)ch);
  while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);
	
  return ch;
}
int fgetc(FILE* f)
{
  while(USART_GetFlagStatus(USART1,USART_FLAG_RXNE)==RESET);
	
  return (int)USART_ReceiveData(USART1);
}

然后就可以直接使用printf函数了

新技能GET!

标签:printf,NVIC,USART,使用,stm32,InitStructure,InitStruct,GPIO,USART1
From: https://www.cnblogs.com/siasBoy/p/16985865.html

相关文章

  • AIRIOT答疑第2期|如何使用物联网平台的数据采集与控制引擎?
    任性用! 作为AIRIOT物联网低代码平台的五大核心能力引擎之一,数据采集与控制引擎具备极强的系统集成能力,提供丰富的接口,具备海量工业设备驱动库,分布式采集,稳定性高,实现......
  • 【Flask】使用操作数据表,数据的增删改查
    目录1.flask项目演示2.sqlalchemy介绍和快速使用2.1原生操作的快速使用3.创建操作数据表3.2sqlalchemy快速插入数据4.scoped_session线程安全4.2类装饰器5.基本的......
  • shell编程中常见使用命令
    awk工作原理awk-F":"'{print$1,$3}'access.log(1)awk使用一行作为输入,并将这一行赋给变量$0,每一行可称作为一个记录,以换行符结束(2)然后,行被空格分解成字段,每个字段......
  • 使用Rsync在 Linux 上传输文件的示例
    在Linux操作系统上,“rsync”代表远程同步同步。它是用于将文件和目录从源(SRC)同步(复制)到目标(DEST)的实用程序。文件和目录可以在本地主机上同步,也可以在远程主机上......
  • vite vue3 使用iconfont svg形式
    1.登录https://www.iconfont.cn/官网,把自己喜欢得图标添加到项目中2.按照标红的顺序选择把文件下载下来,下来以后解压缩把iconfont.js放到项目中3.写一个全局svgIcon.vu......
  • c# .net 多类实现同一个接口,动态指定使用哪一个类的实现
    usingMicrosoft.Extensions.DependencyInjection;usingSystem;usingSystem.Runtime.CompilerServices;usingstaticSystem.Net.Mime.MediaTypeNames;namespaceW......
  • spring下的restTemplate使用
    首先上配置,由于restTemplate不支持一些返回格式,所以需要自己手动配置/***@Description:restTemplate配置类*@Author:wzkris*@Version:V1.0.0*@Date:......
  • docker registry(私库)搭建,使用,WEB可视化管理部署
    DockerRegistry是Docker官方一个镜像,可以用来储存和分发Docker镜像。目前比较流行的两个镜像私库是DockerRegistry,HarBor其中HarBor最合适企业级应用,提供良好的WEB界......
  • maven fmpp+javacc 集成使用简单说明
    dremio以及apachecalcite使用到fmpp+javacc进行代码生成处理,以下是一个简单的集成测试fmpp的作用fmpp实际上是包装了freemarker,提供了cli以及javaapi可以方......
  • Centos 6无法使用yum解决办法
    相信已经有一部分朋友今天连接到CentOS6的服务器后执行yum后发现报错,那么发生了什么?CentOS6已经随着2020年11月的结束进入了EOL(ReachesEndofLife),不过有一些老设备依然......