打印
[STM32]

立创商城STM32F系列——STM32f4串口通信实验代码(02)

[复制链接]
609|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小乐Tzz|  楼主 | 2018-8-31 12:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32f4————串口通信实验代码(02)
/*******************************************************/
介绍完了这两个函数,我们回到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("\r\n您发送的消息为:\r\n");
      for(t=0;t<len;t++)
      {
        USART1->DR=USART_RX_BUF[t];
        while((USART1->SR&0X40)==0);//等待发送结束
      }
      printf("\r\n\r\n");//插入换行
      USART_RX_STA=0;
}else
    {
      times++;
      if(times%5000==0)
      {    printf("\r\nALIENTEK 探索者 STM32F407 开发板 串口实验\r\n");
        printf("正点原子@ALIENTEK\r\n\r\n\r\n");
      }
      if(times%200==0)printf("请输入数据,以回车键结束\r\n");   
      if(times%30==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 是宏定义的数据发送完成标识符。
其他的代码比较简单,我们执行编译之后可以看到,没有任何错误和警告,下面我们可以开始下载验证了。
/*******************************************************/


【立创商城】STM32F103CBT6 托盘  https://item.szlcsc.com/8796.html

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

70

帖子

0

粉丝