【发布时间】:2016-07-12 09:26:07
【问题描述】:
我正在使用 ATmega8,我正在尝试通过 USART(printf 样式)发送包含变量的字符串。我使用 Atmel Studio 6.2 作为 AVR 编程的 IDE。这是我的代码:-
#define F_CPU 8000000UL
#include <avr/io.h>
#include <util/delay.h>
void USARTInit(uint16_t ubrr_value) // initialize USART
{
UBRRL = ubrr_value;
UBRRH = (ubrr_value>>8);
UCSRC|=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
UCSRB=(1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
}
void USARTWriteChar(char data) // send character using USART
{
while(!(UCSRA & (1<<UDRE)));
UDR=data;
}
void send_string(char s[]) // send string using USART
{
int i =0;
while (s[i] != 0x00)
{
USARTWriteChar(s[i]);
i++;
}
USARTWriteChar('\n');
}
int main(void)
{
USARTInit(51);
char val='A';
while(1)
{
send_string("Value = %c",val);
}
}
现在当我编译我的代码时,我得到了这个错误:-
函数 'send_string` 的参数太多
因此,显然它不像在 C 编程中那样接受 %c。 embedded C 有没有办法在字符串中传递变量?
【问题讨论】:
-
没有“嵌入式C”语言!而且该函数不是标准库的一部分,因此,它在“C 编程”中不工作。您可能首先想学习 C 以及什么是函数。
标签: c gcc microcontroller avr-gcc atmelstudio