AVR单片机串口程序遇到的问题,Atmega48PA-PU
在微雪买了个STK48+的开发板,在用它的串口示例程序时候,老是出现打印错误。有没有做过这个的朋友,在下虚心求教!附上代码:voiduart_init(void){UCS...
在微雪买了个STK48+的开发板,在用它的串口示例程序时候,老是出现打印错误。有没有做过这个的朋友,在下虚心求教!附上代码:
void uart_init(void)
{
UCSR0A=0x00;
UCSR0B=0x98;//接收发送使能
UCSR0C=0x06;
UBRR0H=0x00;//9600
UBRR0L=0x2F;
}
void uart_send(unsigned char c)
{
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = c;
}
int main(void)
{
uart_init();
// PORTD=0x01;
// DDRD=0xFF;
while(1)
{
uart_send('a');
// if(PORTD==0x80) PORTD=0x01;
// else PORTD<<=1;
_delay_ms(500);
}
} 展开
void uart_init(void)
{
UCSR0A=0x00;
UCSR0B=0x98;//接收发送使能
UCSR0C=0x06;
UBRR0H=0x00;//9600
UBRR0L=0x2F;
}
void uart_send(unsigned char c)
{
while(!(UCSR0A & (1<<UDRE0)));
UDR0 = c;
}
int main(void)
{
uart_init();
// PORTD=0x01;
// DDRD=0xFF;
while(1)
{
uart_send('a');
// if(PORTD==0x80) PORTD=0x01;
// else PORTD<<=1;
_delay_ms(500);
}
} 展开
展开全部
1、看看芯片的熔丝位设置的是否正确,是否使用的是内部1m的振荡器
2、看看串口工具的波特率是否和代码里设置的一样
2、看看串口工具的波特率是否和代码里设置的一样
更多追问追答
追问
同样的设置,我用代码驱动LED就可以正常工作,所以说熔丝位和振荡器应该是没错的,软件和调试工具的波特率一样的,9600。我也很纳闷,不知道到底什么错了?
追答
LED可以工作 不代表熔丝位正确,如果使用内部1m的振荡器,芯片同样工作,led只需要高低电平就可以亮,但是串口需要计算每个数据bit的时间。而这个时间据取决于晶振的频率和寄存器的设置,如果你是按照12m的晶振设置寄存器,却用1m的晶振,那收发肯定是乱码。
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
STM32F103是一款高性能的嵌入式芯片,由意法半导体(STMicroelectronics)公司生产。它是STM32系列芯片之一,具有紧凑、低功耗、高性能等特点,被广泛应用于嵌入式系统中。STM32F103的主要特点包括:1. 集成了A...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询