STM32-USART控制led和蜂鸣器
文章目录
- 示例程序烧录验证
- 基于上一节程序修改
- 超级终端串口软件的使用
杨桃32学习笔记,本文图片文字皆为转述
示例程序烧录验证
在电脑端打开串口调试助手并向单片机输入1发送数据,接收区显示1:LED1 ON并且
,单片机上的led1灯亮起。向单片机输入0发送数据,接收区显示 0:LED1 OFF并且
,单片机上的led1灯熄灭。向单片机输入2发送数据,接收区显示 2:BUZZER 并且
,单片机上的蜂鸣器响一下。
此外,在单片机上按下按键KEY1和KEY2,接收区显示KEY1 KEY2。
根据该程序我们可以通过修改来做好多事情,比如串口控制继电器,再比如单片机
传感器数值在电脑串口接收界面上显示,等等。
基于上一节程序修改
将main.c修改为如下
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "buzzer.h"
#include "usart.h"
int main (void){//主程序u8 a;//初始化程序RCC_Configuration(); //时钟设置LED_Init();//LED初始化KEY_Init();//按键初始化BUZZER_Init();//蜂鸣器初始化USART1_Init(115200); //串口初始化(参数是波特率)//主循环while(1){//查询方式接收if(USART_GetFlagStatus(USART1,USART_FLAG_RXNE) != RESET){ //查询串口待处理标志位a =USART_ReceiveData(USART1);//读取接收到的数据switch (a){case '0':GPIO_WriteBit(LEDPORT,LED1,(BitAction)(0)); //LED控制printf("%c:LED1 OFF ",a); //break;case '1':GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1)); //LED控制printf("%c:LED1 ON ",a); //break;case '2':BUZZER_BEEP1(); //蜂鸣一声printf("%c:BUZZER ",a); //把收到的数据发送回电脑break;default:break;} }//按键控制if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平delay_ms(20); //延时20ms去抖动if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 printf("KEY1 "); //}} if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平delay_ms(20); //延时20ms去抖动if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 printf("KEY2 "); //}} // delay_ms(1000); //延时}
}
由于主函数使用了查询模式所以要关闭中断在usart.h文件中,将.h修改为如下。
烧录执行可达到预期结果。
超级终端串口软件的使用
超级终端可以显示,中文字符,转义字符,设置背景和字的颜色。
当要烧写程序时,需要关闭com口,烧写完再打开。
在 windows 自带的超级终端中,如何清屏?
--通过发送 0x0C(12)即可实现清屏。
--在“输入字符串”内容中输入 \x0c\0 :字符串结束标志;
--- 在上面的程序里找到 while(*str != '\0') ,您就会知道 \0 的功能了。它可以表示字符串的结束,您可
以不用担心指针会溢出。 \n :换行(asc II 码为 10);
--- 一般和 \r 配合使用以代表回车。因为 \n 只是表示换行而并不让光标回到行首, \r 是实现了回行首
的功能。
\t :横向跳格;
\b :退格;
\r :回车(ascⅱ码为 13); \f :走纸换页;
\\ :字符\(ascⅱ码为 92);
--- \ 是转义字符的表示符,当只想打一个 \ 时就可以打两个。
\' :单引号;
'\"':双引号;
--- ' 在 C 里有特殊用法,所以这个表示只打印这个符号。 \d05:用 8 进制表示字符; \x1c:用 16 进制表示字符
--- 有一些功能没有转义字符,我们就可以用这个指令直接表示指令。\x1c 相当于发送 0x1c 对应的 ASC
码功能。
通过转义字符可以在超级终端中实现一个单片机的早期交互界面下节教程进行讲解。
STM32-USART控制led和蜂鸣器相关推荐
- STM32按键输入控制LED、蜂鸣器
STMSTM32按键输入控制LED.蜂鸣器 基于stm32f407,为实现以上功能,可将问题分为三个部分:LED.蜂鸣器和按键输入. led部分 LED部分 c文件中分为三部分:①使能IO口时钟,②初 ...
- STM32定时器控制LED灯闪烁及PWM练习
一.STM32定时器控制LED灯闪烁 1.相关配置 1)配置RCC和SYS 2)配置IO 配置PC15,并命名为D1. 3)配置定时器 选定时器2,配置Clock Source为Internal Cl ...
- Linux系统编程四:串口编程,控制LED和蜂鸣器
目录 一.概述 二.串口初始化 2.1 读取当前串口的参数 参数结构体 2.2 波特率相关的函数 2.3 清空串口缓存 2.4 设置串口参数 三.串口通信 四.控制LED和蜂鸣器 五.总结 一.概述 ...
- STM32按钮控制LED灯的开关
Hi, I'm Shendi 在之前已经可以控制 PC13 LED灯了,这次加上按钮来控制 首先上效果 STM32按钮控制LED 我使用的是四脚按钮,默认引脚弯折相同的相通,不同不同,按下后四脚都通 ...
- STM32按键控制led四种方法
文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...
- STM32中断控制LED灯亮灭
目录 一.中断介绍 1.中断分类 硬件中断(Hardware Interrupt) 软件中断(Software Interrupt) 2.中断优先级 3.中断源种类 4.中断响应原则 二.新建项目 1 ...
- STM32按键控制LED灯(中断实现)
文章目录 1- 轮询模式和中断模式 2- 配置管脚为中断模式 3- 添加代码 4- 具体实现原理 5- main()--第一个执行程序? 在一般情况下,我们希望实现按键控制灯的亮和灭,这次学习的是中断 ...
- STM32按键控制LED灯亮灭(四)
编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...
- STM32中断控制LED灯
文章目录 一.相关概念 1.中断概念 2.中断过程 3.中断作用 4.中断优先级 5.中断响应过程 二. CubeMX中断控制LED灯 1.创建项目 2.代码修改 3.运行结果 三.HAL库中断串口通 ...
最新文章
- pandas判断日期是否是闰年(is_leap_year)实战: 数据列转化为日期(时间)格式、判断pandas的日期数据列是否是闰年
- Duanxx的图像处理学习: 透视变换(一)
- 自学python从零开始学_新手学习python-从零开始学习
- java培训学费_北京Java培训班学费很贵吗,包含了哪些收费项目
- Moodl:集成密码,消除错误phpCAS error: phpCAS::client(): type mismatched for parameter $se
- 收藏 | 超轻量目标检测模型NanoDet,比YOLO跑得快,上线两天Star量超200
- 串口通信中ReadFile和WriteFile的超时详解!
- C#正则怎么判断字符串中是否有汉字
- 【转】 Android Performance Case Study(安卓绘图性能案例研究)
- maven项目的创建
- Atitit 数据分析之道 attilax著 1. 数据分析的目的	2 1.1. 描述型:发生了什么?可视化仪表盘化很重要。	3 1.2. 2. 诊断型:为什么会发生?结合历史记录	3 1.3. 3
- 窗方法原理之矩形窗及汉明窗
- win10五分钟自动锁屏
- tumblr android app,6 Best Tumblr Apps for Android and iOS (2018)
- jQuery+nicescroll滚动条实现视频点播页面
- 大数据给交通行业带来的五大变革
- 网络安全意识 | 以人为本,安全意识工作大有可为
- 学透CSS-当CSS遇到古诗和月亮,月亮动起来!!!
- LeetCode 981. 基于时间的键值存储 / 274. H 指数 / 275. H 指数 II
- unknown类型的使用
热门文章
- 基于图像的三维模型重建——基础介绍
- RDKit |基于集成学习(Ensemble learning)预测溶解度
- Latex中的表格用法总结(三)——表格的合并分割,字体旋转,表头语句切割
- html 右边是iframe 左右结构_HTML速查表
- config kubectl_使用kubectl管理k8s集群(三十)
- 终于把 7 年前的 Docker Hub 账号恢复了
- 聚类分析和主成分分析
- 命令行的“迅雷”,提升百倍以上下载速率
- JGG:中大骆观正组开发微量样品m(6)A测序新技术
- MPB:浙大王佳堃组-​幼龄反刍动物粪便DNA提取及注意事项