介绍完了这两个函数,我们回到main.c,对于main.c前面引入的头文件为了篇幅考虑,我们后面的实验不再列出,详情请参考我们实验代码即可。主函数代码如下:
int main(void)
{
u8 t,len; u16 times=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //延时初始化
uart_init(115200); //串口初始化波特率为115200
LED_Init(); //初始化与 LED连接的硬件接口
LED0=0; //先点亮红灯
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
printf(" 您发送的消息为: ");
for(t=0;t
{
USART1->DR=USART_RX_BUF[t];
while((USART1->SR&0X40)==0);//等待发送结束
}
printf(" ");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(timesP00==0)
{ printf(" ALIENTEK 探索者 STM32F407 开发板 串口实验 ");
printf("正点原子@ALIENTEK ");
}
if(times 0==0)printf("请输入数据,以回车键结束 ");
if(times0==0)LED0=!LED0;//闪烁 LED,提示系统正在运行.
delay_ms(10);
}
}
}
这段代码比较简单,开头部分我们先调用 NVIC_PriorityGroupConfig 函数设置系统的中断优先级分组。然后调用uart_init 函数,设置波特率为 115200。接下来我们重点看下以下两句:
USART_SendData(USART1, USART_RX_BUF[t]); //向串口1 发送数据
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);
第一句,其实就是发送一个字节到串口。第二句呢,就是我们在我们发送一个数据到串口之后,要检测这个数据是否已经被发送完成了。USART_FLAG_TC 是宏定义的数据发送完成标识符。
其他的代码比较简单,我们执行编译之后可以看到,没有任何错误和警告,下面我们可以开始下载验证了。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』