AVR串口 getchar(),getchar(),printf()等函数的使用

发布者:会弹琴的鲸鱼3312最新更新时间:2015-10-12 来源: eefocus关键字:AVR串口  getchar()  printf() 手机看文章 扫描二维码
随时随地手机看文章
AVR串口 getchar(),getchar(),printf()等函数的使用

AVR单片机可以用getchar(),getchar(),printf()等函数,他们的操作默认会和串口连接起来。

需要包含stdio.h,ICC默认会包含这个文件,但是依然建议你写上这句#include
 
CODE:

//ICC-AVR application builder : 2007-5-25 21:35:24
// Target : M16
// Crystal: 7.3728Mhz
// 用途:演示getchar(),getchar(),printf()等函数的使用。
// 作者:古欣
// AVR与虚拟仪器 [url]http://www.avrvi.com[/url]
// 使用7.3728M外部晶振,注意:请短接跳线JP2的1和2,电源跳线连接3.3V或者5V
// 串口使用JP4的连接方法:1和2短接,使用RS232,请注意查看跳线旁边的示意图
// 开发板连接:无连线

#include
#include
#include

//UART0 initialize
// desired baud rate: 9600
// actual: baud rate:9600 (0.0%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = BIT(URSEL) | 0x06;
UBRRL = 0x2F; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x18;
}

void main(void)
{
unsigned char i;
uart0_init();           //初始化串口
printf("[url]www.avrvi.com[/url]rn"); //输出字符串
while(1)
{
i=getchar();           //读入一个字符
putchar((signed char)i);   //输出字符
if(i=='a') printf("OKrn");//如果输入的是a,输出OK,加回车换行。
if(i=='A') printf("GOODt");//如果输入的是A,输出GOOD,加一个TAB符号。
}
}
在串口调试助手中的效果如下图


[转载]AVR串口 <wbr>getchar(),getchar(),printf()等函数的使用


关键字:AVR串口  getchar()  printf() 引用地址:AVR串口 getchar(),getchar(),printf()等函数的使用

上一篇:ATMage16的16位定时器的PWM应用
下一篇:M8与CX20106A超声波测距

推荐阅读最新更新时间:2024-03-16 14:35

AVR单片机串口红外线传输试验程序
为了验证串口红外传输速度,我搭建了这个小系统。 问题从红外线接收头开始,我使用现成的红外遥控接收头,这就省去了搭建放大整形等等麻烦,但限制也就此产生,后述。红外头内部有40KHZ的选通,所以数字信号必须搭载在40KHZ上。 用74LS00作40KHZ方波发生器,使用如图阻容,产生的方波大致在需求范围。 先想用40KHZ晶振,拆了两个遥控器,445KHZ,不能用,所以还是阻容法,这个50000P是我反复调整的结果。 选用74LS00主要看上它有与门,我们用10脚、9脚入,8脚出这个与非门,把数字信号和载波信号“与”在一起。 遥控接收的要求是,无信号就无载波,串口输出等待状态为高电平,所以用与非门反向一下,13、12脚入,11脚出即是
[单片机]
<font color='red'>AVR</font>单片机<font color='red'>串口</font>红外线传输试验程序
STM32-(10):Printf
学C语言的时候我们经常将printf作为打印输出,可以加格式转换符,比如十进制,十六进制,浮点输出,功能十分强大。在硬件进行调试的时候,也希望能输出这样一个结果,能够看到内部的ARM工作在什么状态,或者运行的结果,一般会用到数码管、液晶屏,但是控制起来麻烦,如果也能用到printf,那肯定很方便! 此时我们只需将printf重定向,原来是输出到屏幕,我们只需要重定向输出到串口。 串口只需要一个串口助手就能看到打印。 printf 是 标准的输入输出库 stdio.lib 内实现的, 这个 lib 库赖以支持的基础是一个文件流 FILE,文件流内有很多的底层函数,比如:_sys_exit _sys_open ,其中有一个底层函数
[单片机]
STM32中ADC的使用/printf函数重定向串口显示内部温度传感器测量值
STM32F334C8T6这款MCU中有两个12位ADC(模数转换器),ADC1的通道16连接到内置的一个温度传感器,本文使用该温度传感器测量MCU和周围的环境温度,并且通过串口发送到PC的串口助手进行显示。 1. ADC的使用 1. select the ADC clock using the function RCC_ADCCLKConfig() 2. Enable the ADC interface clock using RCC_AHBPeriphClockCmd(); 3. ADC pins configuration  Enable the clock for the ADC GPIOs using the fo
[单片机]
STM32中ADC的使用/<font color='red'>printf</font>函数重定向<font color='red'>串口</font>显示内部温度传感器测量值
单片机修改底层函数putchar()实现printf()在LCD上输出
单片机源程序如下: #include reg51.h #include intrins.h #include stdio.h #include LCD.h /*********************** 主函数函数 *************************/ void main(void){ LcdInitiate(); WriteAddress(0x00); printf( Hello Everybodyn ); printf( Pai= %.4f ,3.1415); while(1); } /*********************** 修改底层输出函数 *
[单片机]
单片机修改底层函数putchar()实现<font color='red'>printf</font>()在LCD上输出
printf不定向直接使用问题以及软件更新后的代码补全
我们很多时候可能直接调用printf,然后系统会出现各种各样的问题。 那么究竟是为什么呢? 因为我们需要将这个东西实现在,我们必须定义printf输出的端口 int fputc(int ch, FILE *f) { while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET)) { USART_SendData(USART1, (u8) ch); } return ch; } 这才是c里面的标准输出函数。 当然,我一直都在为keil没有代码补全而烦恼,然后经过同事的指点,我发现是有这个功能的。 configuration里面
[单片机]
<font color='red'>printf</font>不定向直接使用问题以及软件更新后的代码补全
STM32中printf与scanf的重定向问题
关于STM32中 printf 与 scanf 的重定向问题在此我仅对不使用 USE MircoLIB 的情况做整理(针对Keil RVMDK开发环境)。 ① :首先需要在 usart.h 中包含 “stdio.h” 头文件 ② :在 usart.c 中,加入如下代码块,以此避免使用半主机模式,并重定向 printf 和scanf 函数; #if 1 #pragma import (__use_no_semihosting_swi) /*标准库需要的支持函数,use_no_semihosting_swi以避免使用半主机模式*/ struct __FILE { int handle; };
[单片机]
STM32多串口printf函数
1.配置usart2的串口配置,gpio,rcc enable,跟上面类似 2.勾选usb micro lib,跟上面类似 3.添加头文件#include stdarg.h ,编写USART2的printf函数 (1)hal库 /* USART1专用的printf函数 在usart.c中添加下列函数,还要添加申明头文件#include stdarg.h , #include stdio.h //支持printf函数 USART1_printf(“abcd”)用USART2发送字符abcd */ //hal库自定义串口printf函数 void printf2(char * fmt,…) { char buffer ; uint
[单片机]
STM32CubeMX之串口重定向(printf 的使用)
一. 改写函数 新建一个头文件 debug_com.h #ifndef __DEBUG_COM_H #define __DEBUG_COM_H #ifdef __cplusplus extern C { #endif #include stdio.h #include usart.h #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ PUTCHAR_PROTOTYP
[单片机]
STM32CubeMX之<font color='red'>串口</font>重定向(<font color='red'>printf</font> 的使用)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved