这里先给出程序源码:
调用库函数:
#include "sys.h"
#include "usart.h"
#include "led.h"
#include "delay.h"
int main()
{
u8 i;
u8 len;
u32 times = 0;
//中断分组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
//初始化延时函数
delay_init(84);
//初始化串口
uart_init(115200);
//初始化led
LED_Init();
//循环
LED0 = 0;
while (1)
{
//检验接受标志
//若接收到
if (USART_RX_STA & 0x8000) //位15判定是否接收到数据
{
//确定接受信息的长度
len = USART_RX_STA & 0x3fff; //位0到位14与1位与
//输出提示信息
printf("rn您发送的消息为:rn");
//接受信息并串口输出
for (i = 0; i < len; i++) {
USART_SendData(USART1, USART_RX_BUF[i]); //使用库函数SendData向串口1发送数据
//直到接收结束为止
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) != SET); //使用库函数检验发送是否接受完成
}
printf("rnrn");
//检验标志复位
USART_RX_STA = 0;
}
//没有接收到
else
{
times++;
if (times % 30 ==0) LED0 = !LED0;
if (times % 500 == 0) printf("rn请输入要输出的内容rn");
if (times % 3000 == 0) printf("rn年轻人啊!身残志坚。rn");
//延时
delay_ms(10);
}
}
}
使用寄存器:
#include "stm32f4xx.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "beep.h"
#include "sys.h"
int main(void)
{
u8 i; //循环计数位
u8 len;
u32 times;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置中断优先级分组为2
uart_init(115200); //串口初始化波特率设置为115200
delay_init(84); //延时初始化
led_init();
//GPIO_ResetBits(GPIOF, GPIO_Pin_9); //点亮红灯
while (1){
if (USART_RX_STA & 0x8000) //USART_RX_STA位15(第16位)为接收完成标志,其作用在于判定是否接收完成
{
len = USART_RX_STA & 0x3fff; //得到此次收到的数据长度
printf("rn您发送的消息为:rn");
for (i = 0; i < len; i++) {
USART1->DR = USART_RX_BUF[i];
while ((USART1->SR & 0x40) == 0); //USART1->SR位6为发送完成位,具体寄存器相关配置参考文档《stm32f4xx中文参考手册》
}
printf("rnrn");
USART_RX_STA = 0;
} else
{
times++;
if (times % 5000 == 0) {
printf("rnALIENTEK 探索者STM32F407开发板 串口实验rn");
printf("正点原子@ALIENTEKrnrnrn");
}
if (times % 200 == 0) printf("请输入数据,以回车键结束rn");
if (times % 30 == 0) LED0 = !LED0;//led闪烁提示正在运行程序
delay_ms(10);
}
}
}
正确的输出结果应该是这样的(以库函数版本为例):
同时红色LED显示灯不停闪烁。
上一篇:STM32PWM实现呼吸灯-库函数
下一篇:STM32键盘-库函数
设计资源 培训 开发板 精华推荐
- 氛围灯-ws2812
- NSVC2020JBT3G 350mA LED串PWM调光典型应用
- YX861A太阳能草坪灯方案
- TWR-56F8257: DSC MC56F8257电机控制塔式系统模块
- 永不断电的ESP32门禁系统
- ADP8863 电荷泵、7 通道趣味照明 LED 驱动器的典型应用电路
- 具有集成终端的 LTC2870 RS232/RS485 多协议收发器的典型应用
- 【创意PCB】奇怪的雪花形状的灯-涂鸦雪花灯
- AD8047-EB,AD8047 评估板,用作 AD872(12 位、10 MSPS A/D 转换器)的驱动器
- LTC1261CS8-4.5 7 节电池至 -1.24V 输出 GaAs FET 偏置发生器的典型应用电路
- 希润医疗孟铭强:手功能软体机器人,让脑卒中患者重获新生
- 柔灵科技陈涵:将小型、柔性的脑机接口睡眠设备,做到千家万户
- 微灵医疗李骁健:脑机接口技术正在开启意识与AI融合的新纪元
- USB Type-C® 和 USB Power Delivery:专为扩展功率范围和电池供电型系统而设计
- 景昱医疗耿东:脑机接口DBS治疗技术已实现国产替代
- 首都医科大学王长明:针对癫痫的数字疗法已进入使用阶段
- 非常见问题解答第223期:如何在没有软启动方程的情况下测量和确定软启动时序?
- 兆易创新GD25/55全系列车规级SPI NOR Flash荣获ISO 26262 ASIL D功能安全认证证书
- 新型IsoVu™ 隔离电流探头:为电流测量带来全新维度
- 英飞凌推出简化电机控制开发的ModusToolbox™电机套件