// 方法1
int fputc(int ch, FILE *f)
{ //判断发送数据寄存器是否为空
while(USART_GetFlagStatus(USART1 , USART_FLAG_TXE) == 0);
USART_SendData8(USART1 , (u8)ch); //向发送寄存器写入数据
return ch;
}
// 方法2
int fputc(int ch, FILE *f)//STM8S105,printf函数重定向
{
while (!(UART2->SR&0x80));
UART2->DR=ch;
return ch;
}
关键字:STM8 printf()
引用地址:
STM8——printf()
推荐阅读最新更新时间:2024-03-16 15:42
关于51单片机使用printf进行串口调试的方法
//关于51单片机使用printf进行串口调试 //重定义代码,可以使用printf给串口发送数据 char putchar(char c) { ES=0;//关串口中断 TI=0;//清除标志位 SBUF=c;//发送数据 while(!TI);//等待数据发送 TI=0;//清除标致位 ES=1;//开串口中断 return c; }
[单片机]
STM8的定时唤醒单元的使用
STM8L的“RTC periodic wakeup unit”可以通过寄存器RTC_CR1的WUCKSEL bits来配置不同的唤醒周期。具体的有以下的三种模式: 1.1,WUCKSEL = 0xxb for short wakeup periods 1.2 WUCKSEL = 10xb for medium wakeup periods 1.3 WUCKSEL = 11xb for long wakeup periods 其中short wakeup periods时钟的分频是如下流程: 则的周期唤醒在不同时钟源频率下的clk为: 最小的唤醒周期为(0x0001+1)*0.125us
[单片机]
STM8 仿真跑飞 swim comm timeout
跑飞原因就很多了,我说说程序没问题,莫名其妙跑飞的情况。 为啥说程序没问题呢?首先是编译通过啦,其次我们也正确的配置寄存器了,但是还跑飞了,蛋疼。 特别是相对于STM8S103F3这些只有少的可怜的8K存储空间的单片机,真是蛋疼啊,好了不废话了,据我的经验总结一下: 用IAR平台,COSMIC的很烂,劝君莫用。 1、debug模式优化设置为none,此种情况下编译并运行还跑飞的话,可能是Option byte设置问题。比如你用了TIM2_CH1的PWM功能,但是你的Option byte没设置,那么跑起来会飞掉(我第一次遇到这么奇葩的单片机) 2、如果程序真的很大,要把优化设置为middle,那么就要小心了。IAR的优化有点
[单片机]
STM8 选项字节的写入
STM8的EEPROM在复位后,要想要写入数据,必须先解锁,必然无法写入数据。解锁就是向 FLASH_DUKR 中先后写入: 第一个硬件秘钥:0xAE 第二个硬件秘钥:0x56 两个字节的数据。 此时 FLASH_IAPSR 中的 DUL 位将会变为1,表示 EEPROM 已经成功解锁,可以进行写入操作了。如果发现 DUL 位不为 1 ,是可以按顺序重复写入秘钥的,直到 DUL 位为 1 为止。 但手册上是这么说的: 中文手册: 2. 如果密钥输入错误,应用程序可以尝试重新输入这两个MASS密钥来对DATA区域进行解 锁。 4. 如果密钥输入错误,DATA EEPROM区域在下一次系统复位之前将一直保持写保护状态。 在下一次复位
[单片机]
STM8单片机学习总结05-蓝牙模块
本次操作使用的“蓝牙模块”为“HC-06”,主要注意以下几点: 01)、“HC-06”(蓝牙模块)而言,其与“HC-05”一样,均采样“AT指令”控制,但需注意: i)、“HC-06”为“串口”连接,电压为“+5.0V”,“波特率”默认“9600”,“设备名称”默认“HC-06”,“配对密码”默认“1234”; ii)、“HC-06”发送“AT指令”时,末尾不需加“\r\n”(Enter键); iii)、需与“手机app”配合使用,推荐“蓝牙串口助手 Pro”; 02)、“HC-06”对应“AT指令”主要操作为以下4项: i)、“测试通信”:发送“AT”,返回“OK”; ii)、修改“波特率”:发送“AT+BAUDx”,“x”为“
[单片机]
STM32CubeMx生成的工程中使用Printf函数调试和IAP
一、STM调试信息打印方法。 1. 新建stm32cubemx工程,配置工程。 我用的是STM32cubeMx版本: Version 4.27.0, cube Version V1.0。 2. 在stm32cubemx工程,配置工程,勾选使用FreeRtOs系统。 注意,勾选左边的,freertos,使用系统。stm32做的,非常方便。 3. 生成带系统FreeRtos的源码工程(我这里基于keil MDK v5) 4. 生成工程,然后用keil打开,在源码里面添加代码,使得USART1重定向到标准Printf函数中输出。 在generated file里面,勾选:generate periheral init
[单片机]
STM8的烧写
最近一次烧写STM8遇到以下问题 1.Error : Cannot communicate with the tool. Wrong tool selection or check tool power supply or check that a previous session is closed. Error : PROGRAM MEMORY programming failed. 和stlink的链接出问题, 有两种情况: a.仿真器未连接 b.驱动没装好 2.Error : Cannot communicate with the device ! Check the SWIM cable con
[单片机]
IAR环境下基于SemiHost机制实现printf功能
我们在MCU的开发调试过程中,有时希望将一些信息输出以便观察。通常我们可以将标准C库中Printf相关实现函数进行重定向,通过UART串口输出,或者利用ITM机制通过SWO输出。这里将简单演示IAR环境下基于SemiHost机制实现printf功能。 下面使用的开发板STM32F4DISCOVERY板,硬件调试器为STLINK。稍作配置后即可使用。注意在代码里将stdio.h包含进去。 演示代码: 在调试状态下,点击view菜单下面的Terminal I/O子菜单即可出现输出窗口。 配置过程很简单,实现起来也挺方便的,需要的时候我们可以加以灵活选用。
[单片机]