mega128的 标准I/O流调试程序
来源:互联网 发布:棉花糖软件 编辑:程序博客网 时间:2024/06/02 00:24
2008.02.29 -----2008.03.1
串口是经常用到的,以前都弄过,而且基本没出什么错.可昨天晚上到现在才弄好,一直不知道出什么原因,不能发送很接收数据,或者有时候是不正常.很郁闷,程序怎么看好象都没什么问题,可就是....
因为没有液晶在这里,有的一个NOKIA3310也听同学说好象坏了.所以才打算用串口显示,而且是标准的,这样在显示程序流程结果时候比较好.我呢,在AVR Studio配置fuse(熔丝位)的时候竟然忘记把那个Atmega103 Compatibility那项的钩去掉了.所以搞了N久.主要是因为我平时实验主要用的是mega16L,所以,没有这项.知道是知道的,但就是````说什么好呢,只能怪自己粗心,浪费了好多时间.
顺便说一下,因为是7.3728M的外部晶振,所以AVR Studio配置fuse里面选这个 :Ext. Crystal/Resonator High Freq.; Start-up time: 16K CK + 64 ms; [CKSEL=1111 SUT=11]
下面贴一下基本是照搬的代码.
**** 名 称:AVRmega128 标准I/O流调试程序
****
**** 作 者:zhiyu
**** 编译器:WINAVR20070525
****
**** 参 考:<<AVR单片机GCC程序设计>>
**** 日 期:2008.03.01
****
**** 芯 片:M128L
**** 时钟源:外部7.2728M晶振
****
**** 结 果:测试成功
**** 问 题:当时配置熔丝位的时候,忘记把103的那个钩去掉,害得搞了一天!
***********************************************/
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <util/delay.h>
char g_aString[100];//读取字符串缓冲区
static int uart_putchar(char c, FILE *stream);
static int uart_getchar(FILE *stream);
static FILE mystdio = FDEV_SETUP_STREAM(uart_putchar, uart_getchar,_FDEV_SETUP_RW);
//向UART写一字节
static int
uart_putchar(char c, FILE *stream)
...{
if(c==' ')
uart_putchar(' ', stream);
loop_until_bit_is_set(UCSR0A,UDRE0);
UDR0=c;
return 0;
}
//从UART读一字节
static int
uart_getchar(FILE *stream)
...{
loop_until_bit_is_set(UCSR0A,RXC0);
return UDR0;
}
//初始化i/o
void IoInit(void)
...{
//UART初始化
UCSR0C=0x06;
UBRR0H=0;
UBRR0L=47; //9600 baud
UCSR0B=_BV(RXEN0)|_BV(TXEN0);/**//*(1<<RXCIE0)|(1<<TXCIE0)|*/
//i/o流UART连接
//fdevopen(usart_putchar,usart_getchar,0);
}
//测试主程序
int main(void)
...{
int tmp;
IoInit();
stdout = stdin = &mystdio ;
_delay_ms(30); //延时一下显示就不会出什么错了,可能是没延时,一上电没来得及那么快,输出就有误吧
while(1)
...{
//测试1
printf("测试1[输入一字符串]: ");
scanf("%s",g_aString);
printf("您的输入为:%s ",g_aString);
//测试2:使用FLASH区的字符串
printf_P(PSTR("测试2[输入数字]: "));
scanf_P(PSTR("%d"),&tmp);
printf_P(PSTR("您的输入为:%d "),tmp);
}
}
测试是通过的,参考的书也是比较经典的.
弄好这个,以后就比较好调试了.但实际应用却不会要这样的输出的.
CC2420还没驱动起来.IEEE802.15.04标准只有PHY和MAC两层的东西,chipcon公司给的驱动程序范例还不是很难理解,但我这就不是很好弄.两块板接了40多根线.挺乱的.还有,本来mega128板子上还有几个按键的,都不怎么好用,很是失灵,消抖和延时也都有了,但`````究竟在哪里有误,明天继续做,把这个键盘搞掂.然后再看能不能驱动这两个CC2420无线通信!
- mega128的 标准I/O流调试程序
- 标准的I/O流
- 标准I/O流
- 标准I/O缓冲 与 用户程序的行缓冲区
- 标准的I/O函数
- 标准I/O的机理
- java 标准I/O流
- 标准I/O文件I/O的区别
- 文件I/O和标准I/O的使用
- 文件I/O和标准I/O的区别
- 文件I/O和标准I/O的区别
- 文件I/O和标准I/O的区别
- 文件I/O和标准I/O的区别
- 文件I/O与标准I/O的区别
- 文件I/O和标准I/O的区别
- ANSIC 的标准I/O函数
- 标准I/O函数库的缓冲
- 连接标准I/O的管道模型
- sscanf的一些用法
- error LNK2001: unresolved external symbol VC++链接错误详解
- 用脑过度了头痛了两天
- 用 eclipse wtp 新建 ejb (2.1) 的问题。
- VC编译选项 简介
- mega128的 标准I/O流调试程序
- 开个博客
- i am here, for gis
- C++ Dll 编写入门(转载)
- 2008-03-01 日志:C#周末班授课总结
- 歌词显示的技术实现
- 网络通货告诉您 科士威eCosway为什么能够如此迅猛的的脱应而出!
- 如何解决unexpected end of file while looking for precompiled header directive的问题
- RE: [Ipsec] Doubt regarding Encoding method for RSA