主函数如下:(ALIENTEK MINISTM32 实验3 串口实验)
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "key.h"
#include "led.h"
int main(void)
{
u8 t;
u8 len;
u16 times=0;
Stm32_Clock_Init(9);
delay_init(72);
uart_init(72,9600);
LED_Init();
while(1)
{
if(USART_RX_STA&0X40)
{
len = USART_RX_STA & 0x3f; //得到此次接受数据的长度
printf("\n 发送的信息为 : \n");
for(t=0;t<len;t++)
{
USART1->DR = USART_RX_BUF[t];
while((USART1->SR&0X40)==0); //等待发送结束
}
printf("\n\n");
USART_RX_STA = 0;
}else
{
times++;
if(times%5000==0)
{
printf("\nMiniSTM32 ??? ????\n");
printf("????@ALIENTEK\n\n\n");
}
if(times%200==0)printf("请发送数据\n");
if(times%30==0)LED0=!LED0;
delay_ms(10);
}
}
}
运行后,只能看到发送的数据:“请发送数据”
从PC上发送的信息看不到
在USART.H中
extern u8 USART_RX_BUF[64]; //接收缓冲,最大63个字节.末字节为换行符
extern u8 USART_RX_STA; //接收状态标记
//如果想串口中断接收,请不要注释以下宏定义
#define EN_USART1_RX //使能串口1接收
只是这样定义了一下就可以了吗,这个我不是很清楚,因为我在参考手册中并没有找到
USART_RX_BUF 和
USART_RX_STA 的信息,所有我想,只是这样定义是不是不够完整,相当于只是定义了两个计算机不知道是用来做什么的变量
请帮忙解答,万分感谢
|