📄 uart.c
字号:
//********************************************************************************************
//
// Title : MP3测试 - 调试程序
// Author : Ant (gz_ant@126.com)
// Created : 2005/02/16
// Revised : 2005/02/19
// Version : 0.1
// Target MCU : MEGA16
// Editor Tabs : 4
//
// uart.c程序本来用于调试用, 但这里在UART_Debug()中的下半部分程序无效, 使用者可修改.
//
// 注: 本代码用于测试STA013硬件及其驱动程序, 并非一个完整的MP3播放器程序.
// 上电后,会循环不停播放一段约2秒的MP3音乐.
// 硬件没有连接RAM缓冲及储存MP3文件的设备, MP3数据是保存在AVR的FLASH中.
// 本代码经测试, 但可能存有Bugs, 若你发现有任何Bug或有任何建议,
// 请来信告知: gz_ant@126.com
//// 本代码部分来自"Procyon AVRlib": http://hubbard.engr.scu.edu/embedded/avr/avrlib/release_notes.html
// 特此感谢它的创始人: Pascal Stang !
//
// 感谢在www.21icbbs.com帮助过winsu的朋友, 希望使用者能发扬网络的 "自由,开放" 精神.
//********************************************************************************************
#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include "type.h"
#include "main.h"
#include "UART.h"
#include "driver/I2C.h"
#include "driver/sta013.h"
#include "driver/spi.h"
//========================================
void UART_Init(void)
{
UCSRB = UBRRH = 0;
UBRRL = (ClockCPU/Baud)/16-1;
UCSRB = (1<<RXEN) | (1<<TXEN);
}
u8 ReceiveByte( void )
{
while( !(UCSRA & (1<<RXC)) );
return UDR;
}
void TransmitByte( u8 data )
{
while ( !(UCSRA & (1<<UDRE)) );
UDR = data;
}
void UART_TranStr(char *Str)
{
while(*Str)
{
TransmitByte( *Str++ );
}
}
//
void UART_PrintNum(u8 val)
{
u8 buffer[8];
u8 i;
for(i=0; i<8; i++) buffer[i] = 0;
_itoa( val, buffer, 16 );
UART_TranStr(buffer);
}
//
void UART_PrintNumEx(u16 val,u8 radix)
{
u8 buffer[6];
u8 i;
for(i=0; i<6; i++) buffer[i] = 0;
_itoa( val, buffer, radix );
UART_TranStr(buffer);
}
//
void UART_Debug(void)
{
u8 tmp;
UART_Init();
I2C_Ini();
sta_IoIni();
sta_Reset();
spiInit();
sta_Init();
sei();
sta_SetVolume(70,1);
while(1) sta_SendToDecoder(8*1024);
while(1)
{
while( UCSRA&(1<<RXC) )
{
tmp = UDR;
switch (tmp)
{
case 0x00:
UART_TranStr("Test UART!");
break;
case 0x01:
sta_Reset();
UART_TranStr("Ini STA013...");
if(sta_Init()) UART_TranStr("STA013 OK! ");
else UART_TranStr("No STA013! ");
sta_SetVolume(70,1);
UART_TranStr("Sent...");
sta_SendToDecoder(8*1024);
UART_TranStr("End.");
break;
//=============================================================
default:
UART_TranStr("Fail Command! ");
break;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -