历史上的今天
今天是:2024年09月29日(星期日)
2018年09月29日 | STM32f4---串口通信实验代码(02)
2018-09-29 来源:eefocus
介绍完了这两个函数,我们回到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
{
USART1->DR=USART_RX_BUF[t];
while((USART1->SR&0X40)==0);//等待发送结束
}
printf("\r\n\r\n");//插入换行
USART_RX_STA=0;
}else
{
times++;
if(timesP00==0)
{ printf("\r\nALIENTEK 探索者 STM32F407 开发板 串口实验\r\n");
printf("正点原子@ALIENTEK\r\n\r\n\r\n");
}
if(times 0==0)printf("请输入数据,以回车键结束\r\n");
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 是宏定义的数据发送完成标识符。
其他的代码比较简单,我们执行编译之后可以看到,没有任何错误和警告,下面我们可以开始下载验证了。
史海拾趣
|
各位大哥大姐:小弟在一个接收模块上看到一个像TO-92封装三极管的元件。在电路中的作用是在调幅中频信号解调出调制信号。通过测量,它不是一个三极管,而是一个组合元件,请高手说出它的型号及其参数。… 查看全部问答> |
|
MTK6225 手机开发板(含源代码) 有诚意者请联系 Qq:296662705 硬件特性: 1、 CPU:mtk6225 2、 TFLASH 卡接口 3、 176X220 2.6寸TFT LCD,最高支持320*240*16的TFT LCD 4、 4线触摸屏接口 5、 双声道音频输出 6、 一个Camera 130万像素 ...… 查看全部问答> |
|
最近遇到一个问题: 环境如下 wince下串口每秒发送15K数据,我的串口读写缓冲区设置4K,全局数据设置为20K 现在有两个解决办法 请大家分析一下那个更好 1.wince socket同步发送 ...… 查看全部问答> |
|
因需要,必须采用免费软件(非破解)开发STM32,想问问 支持STM32的GCC是否如AVR GCC那样支持windows下使用(非虚拟机)? 有什么易用的IDE?是否能使用STLINK等调试器? GCC是否有什么BUG?… 查看全部问答> |
|
关联表的操作 AssociatedDevList 表为与此设备相关联的设备表,并不是 ZigBee 网络中的所有设备 信息表。表中信息的 IEEE 地址是唯一的,每个设备加入它的父节点时会在表中添加一个记 录,但是子节点断电离开网络时不会删除该条记录,如果 ...… 查看全部问答> |
|
利用大功率数字源表构建多源测量单元(SMU)系统(连载四):为高电压测试选择最佳电 确保测试期间使用的电缆符合测试系统最大电压额定值。在功率器件关闭状态特性分析期间经常遇到高压、低电流测试,要使用能够实现这类测试所需性能的电缆。 在高压测试时,要保证充分绝缘,并使漏电流和系统电容带来的影响最小化。 适当 ...… 查看全部问答> |




