gpt4 book ai didi

c - 解读 Atmega328p 数据表

转载 作者:行者123 更新时间:2023-11-30 15:47:00 26 4
gpt4 key购买 nike

我正在尝试使用 AVR 代码对 Arduino Uno 进行编程,因为我不被允许在 9 月份开始的高级项目中使用 Arduino 库。我找到了数据表,让数字引脚正常工作,然后尝试通过 USB 串行连接与我的计算机进行通信。我已经将本手册的第 19 章 (1) 读了太多遍,但我仍然迷失方向。我从库文档本身和数据表中复制并粘贴了代码,但它仍然说事情尚未解决和/或未找到。如有任何帮助,我们将不胜感激。

代码:

#include <stdio.h>
#include <avr/io.h>
#include <util/delay.h>
#include <util/setbaud.h>

#define analog1 PC0
#define LED PB5
#define BAUD 9600
//#define F_CPU 16000000

void init_io(){
DDRB |= (1<<LED);
DDRC |= (0<<analog1);

}

static void
uart_9600(void)
{
UBRRH = UBRRH_VALUE;
UBRRL = UBRRL_VALUE;
#if USE_2X
UCSRA |= (1 << U2X);
#else
UCSRA &= ~(1 << U2X);
#endif
}

void USART_Transmit( unsigned char data )
{
/* Wait for empty transmit buffer */
while ( !( UCSRnA & (1<<UDREn)) )
;
/* Put data into buffer, sends the data */
UDRn= data;
}

int main(){
int analog_value = 1000;
while(1){
//analog_value = PINC;

if(analog_value > 500){
PORTB |= (1<<LED);
_delay_ms(500);
PORTB &= ~(1<<LED);
_delay_ms(500);
putchar(analog_value);

}
}
}

非常感谢!

最佳答案

代码中遇到的第一个问题是 AVR-libc 问题。您正在使用util/setbaud.h文件不正确。我建议你看看文档here 。为了简单起见,您需要#define BAUD 9600 你之前#include <util/setbaud.h> 。然后,正如其他人指出的那样,您的寄存器名称不正确。 USART 控制寄存器为 UCSRnA , UCSRnBUCSRnC ;波特率寄存器是UBRRnLUBRRnH ,其中n是设备上正在使用的串口号,索引从0开始。

您还需要定义一个函数来处理 stdout ,因为 AVR-libc 没有为您提供任何内容。请参阅 stdio.h 的文档为了学习如何编写一个。

干杯。

关于c - 解读 Atmega328p 数据表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17823612/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com