这个程序与例程大致相同,就是随便改了参数,不经意发生了如下错误,编译没错,就是程序运行显示不对,我认为是k赋予初值导致的,求大神详细讲解
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "lcd.h"
#include "usart.h"
#include "rs485.h"
int main(void)
{
u8 key,k;
u8 i=0,t=0;
u8 cnt=0;
u8 rs485buf[5];
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
LCD_Init();
KEY_Init();
RS485_Init(9600);
POINT_COLOR=RED;
LCD_ShowString(60,50,200,16,16,"WarShip STM32");
LCD_ShowString(60,70,200,16,16,"RS485 TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2012/9/9");
LCD_ShowString(60,130,200,16,16,"KEY0:Send");
POINT_COLOR=BLUE;
LCD_ShowString(60,150,200,16,16,"Count:");
LCD_ShowString(60,170,200,16,16,"Send Data:"); //?á??·?????????
LCD_ShowString(60,210,200,16,16,"Receive Data:"); //?á??????????????
while(1)
{
key=KEY_Scan(0);
if(key==KEY_RIGHT)//KEY0°???,·???????????
{
for(i=0;i<5;i++)
{
rs485buf=cnt+i;//????·?????????
LCD_ShowxNum(60+i*32,190,rs485buf,3,16,0X80);
}
RS485_Send_Data(rs485buf,5);
}
RS485_Receive_Data(rs485buf,&key);
if(k)
{
if(k>5)key=5;
for(i=0;i<k;i++)LCD_ShowxNum(60+i*32,230,rs485buf,3,16,0X80);
}
t++;
delay_ms(10);
if(t==20)
{
LED0=!LED0;
t=0;
cnt++;
LCD_ShowxNum(60+48,150,cnt,3,16,0X80);
}
}
}
运行结果receive data有数据,不过不动,其他没数据,按键也不管用
|