在使用ST官网的库建立工程时,我们可以调用printf(),在使用STM32CubeMX建立工程时,调用printf(),无法打印出数据,度娘告知,需要添加如下函数:
int fputc(int ch,FILE *f)
{
uint8_t temp[1]={ch};
HAL_UART_Transmit(&huart1,temp,1,2);
return(ch);
}
函数可以添加在main()函数前面,也可以添加在usart.c里面。
作用:重新定义printf(),指向huart1(串口1),在这里可以更改为其他串口。
关键字:STM32CubeMX printf() 输出数据
引用地址:
STM32CubeMX学习笔记:printf()输出数据
推荐阅读最新更新时间:2024-03-16 15:42
51单片机 printf函数 调试程序
主要分三个部分(1)51单片机程序部分;(2)keil工具部分;(3)为何printf输出为串口。 (1)51单片机程序部分 #include stdio.h #include reg51.h void InitUART(void)//使用定时器1作为串口波特率发生器 { TH1 = 0xF3; //晶振12mhz 波特率串口上设为2400才不显示乱码代码是4800 TL1 = TH1; TMOD |= 0x20; //定时器1方式2 SCON = 0x50; //串口接收使能 ES = 1; //串口中断使能 TR1 = 1; //定时器1使能 TI = 1; //发送中断
[单片机]
STM32之串口通信之printf重定向
当我们在学习一款CPU时,最经典的实验莫过于流水灯了,掌握流水灯的话就基本等于学会操作I/O口了,那么在学会I/O之后,相对于我们来说会把学习串口的操作放在第二位。在程序运行的时候我们可以点亮一个LED来显示代码的执行状态,但有时候我们还想把某些中间量后者其他程序状态信息打印出来显示在计算机上,那么这时候串口的作用就可显而知了。 下面我们来看一下什么是串口 串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降
[单片机]
STM32CubeMX系列 | 外部SRAM
1.外部SRAM简介 本例程使用的STM32F103ZET6本身有64K字节的SRAM,一般应用已经足够;不过在一些对内存要求高的场合,比如跑算法或者GUI等,就需要外扩SRAM来满足大内存使用的需求。这里我们使用了一颗256K字节容量的SRAM芯片:IS62WV12816,利用STM32F1的FSMC控制该SRAM芯片,实现对该SRAM芯片的访问控制 IS62WV12816是一种16位宽128K(128*2,即256K字节)容量的CMOS静态内存芯片,它有高速访问、低功耗、兼容TTL电平接口、全静态操作(不需要刷新和时钟电路)、三态输出和字节控制(支持高/低字节控制)等特点 IS62WV12816的引脚以及对应的引脚功能如下图示
[单片机]
C语言中的可变参数函数的浅析(以Arm 程序中的printf()函数实现为例)
我们在C语言编程中会遇到一些参数个数可变的函数,一般人对它的实现不理解。例如Printf(): Printf()函数是C语言中非常常用的一个典型的变参数函数,它 的原型为: int printf( const char* format, ...); 它除了一个参数format固定外,后面的参数的个数和类型是不确定的,如下列三种调用方法: 1. printf(“%dn”, i); 2. printf(“%sn”, “Hello World”); 3. printf(“The result is %d, name is %s”, i, “Lily”); 使用可变参数时,需要用到的库函数:va_list 、va_s
[单片机]
STM32CUBEMX(1)--PWM
概述 本篇文章主要介绍如何使用STM32CubeMX输出PWM,并制作呼吸灯效果。 硬件准备 首先需要准备一个开发板,这里我准备的是NUCLEO-F030R8的开发板: 选择 芯片 型号 配置时钟源 HSE与LSE分别为外部高速时钟和低速时钟,在本文中使用内置的时钟源,故都选择Disable选项,如下所示: 配置时钟树 STM32F0的最高主频到48M,所以配置48即可: PWM配置 本次实验使用的是 TI M3的通道1来输出PWM波,选择时钟,并且选择通道1的PWM模式。 配置PWM波的参数 PWM频率计算如下所示 在这里插入图片描述 在上面配置TIM3参数,预分频系数设置为48-1, 自动重载值
[单片机]
第一次使用STM32cubemx后No target conncted问题
本人用的是ST_Link下载器下载程序,在第一次使用STM32cubemx后仅仅只能下载一次程序 原因可能是因为STM32CubeMX生成的代码会把调试端口关闭 STM32cubemx软件里“SYS”选择“Trace Asynchronous Sw”调试器,(“SYS”还有其他几个选项不知道啥意思,望高手解答,谢了)需要把调试器选进来。如果关闭了调试端口的功能,下次烧录程序时就需要“按住复位键进入下载后松手”的方法来下载程序
[单片机]
STM32CubeMX系列教程16:RNG和CRC
一、随机数发生器(RNG) RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的随机数。 复制串口printf的工程,修改文件夹名。击STM32F746I.ioc打开STM32cubeMX的工程文件重新配置,激活随机数发生器(RNG)。 配置RNG时钟为48MHz。RNG没有参数配置。 生成报告以及代码,编译程序。在iwdg.c文件中可以看到RNG初始化函数。在stm32f7xx_hal_rng.h头文件中可以看到RNG的操作函数。 在main函数while循环中添加应用函数每隔1s打印输出一个随机数。 01 /* USER CODE BEGIN WHILE */
[单片机]
实现STM32的串口数据发送和printf函数重定向
简介:在调试电机驱动程序的时候,是不能随便利用中断来进行一些寄存器或数据的查看的,不然你在运行的时候突然来一下,如果占空比大的话那可能直接就把MOS管给烧了,所以我们很多情况下只能使用USART(串口)来进行程序的调试和数据的监控了。 对于STM32来说,由于很多内容都是有库来实现的,那就省了很多时间,直接看个例子就可以写了,大致有4步步骤: 1 1、RCC始终初始化,对端口和USARTX使能时钟 2 2、初始化端口功能,RX设置为输入悬空,TX设置为复用功能的推挽输出,注意GPIO_SPEED要设置下,我没设置弄了半天都没输出 3 3、设置USARTX寄存器,波特率、数据位、校验位、停止位等 4 4、看需要是否开中断,我
[单片机]