我正在使用 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
文件中定义。该代码有什么问题?