我正在使用AVR Studio + WinAVR为AT90CAN32编写固件。
对于有经验的AVR程序员来说似乎很简单。
我将int
参数传递给函数,但在函数内部它始终为零。
内部protocol.c
文件:
#include <uart.h>
static char packet[16] = ":AA111122223!f\r\n";
void vDivRequesting(void)
{
uint8_t cntOfBms = getCountOfBms( );
for(uint8_t i=0; i<cntOfBms; i++)
{
createPacket(getBmsNetworkNumber(i), REQUEST_V_DIV, 1);
usartSendString(packet,11);
_delay_ms(200);
}
}
有uart.c文件:
void usartSendString( char *data, uint8_t len )
{
uint8_t i=0;
usartSendByte(len + 0x30);
for( i=0; i<len; i++)
{
usartSendByte(*data);
*data++;
}
}
它打印出len
参数为零。 usartSendString
函数在uart.h
文件中定义。这段代码出了什么问题?