【火牛STM32F103VC】RT-Thread 蜂鸣器BEEP功能验证
开发环境
- Win10 64位
- Keil MDK5
- 【火牛开发板 STM32F103VCT6】
- USB 转串口线(CH340),这里使用RS232的串口,注意区分 TTL电平的
- 5V 直流电源,用于给开发板【牛角座】供电,当然可以使用USB线供电
- J-Link V9,用于调试与下载程序
蜂鸣器
- 开发板上有一个蜂鸣器,这个是【直流】型的,也就是通电就发出声音
- 使用引脚控制,控制GPIO引脚的高低输出即可
- 查看原理图:使用的是PB5
- 注意有个排针跳线,需要使用【跳线帽】短接 JP5的 1、2,这样GPIO 的引脚PB5,才能控制BEEP的导通与关闭
测试程序
这里使用RT-Thread,环境搭建可以参考
【火牛STM32F103VC】RT-Thread 开发测试环境搭建
beep.c
#include "beep.h"
#include "board.h"
#include <stdlib.h>void beep_gpio_init(void)
{/* set BEEP pin mode to output */rt_pin_mode(BEEP_PIN, PIN_MODE_OUTPUT);rt_pin_write(BEEP_PIN, PIN_LOW);rt_kprintf("%s : beep init\r\n", __func__);
}void beep_power_on(rt_uint8_t bon)
{if (bon == 0x00){rt_kprintf("%s : beep off\r\n", __func__);rt_pin_write(BEEP_PIN, PIN_LOW);}else{rt_kprintf("%s : beep on\r\n", __func__);rt_pin_write(BEEP_PIN, PIN_HIGH);}
}void beep_test(int argc, char **argv)
{if (argc < 2){beep_power_on(0x01);rt_thread_mdelay(200);beep_power_on(0x00);}else{int beep_cnt = atoi(argv[1]);while (beep_cnt > 0){beep_power_on(0x01);rt_thread_mdelay(50);beep_power_on(0x00);rt_thread_mdelay(80);beep_cnt--;}}
}/* 导出 串口 shell 命令 */
MSH_CMD_EXPORT(beep_test, beep_test);
- beep.h
#ifndef __BEEP_H__
#define __BEEP_H__#include <rtthread.h>/* defined the BEEP pin: PB5 */
#define BEEP_PIN GET_PIN(B, 5)void beep_gpio_init(void);
void beep_power_on(rt_uint8_t bon);#endif
- 在 main 函数(main 线程)中调用
beep_gpio_init()
初始化 BEEP的控制引脚
测试
- 这里导出了 MSH 串口的命令,这样再串口输入
beep_test 3
这样的命令就可以让蜂鸣器吱吱叫了 - 如:
beep_test 3
,蜂鸣器叫 3声
msh >beep_test 3
beep_power_on : beep on
beep_power_on : beep off
beep_power_on : beep on
beep_power_on : beep off
beep_power_on : beep on
beep_power_on : beep off
小结
- 普通的蜂鸣器控制起来很方便,类似引脚控制
- 注意 shell 命令执行的环境是线程环境,也就是
rt_thread_mdelay(100)
这的延时函数,需要在线程环境中执行,不能在中断环境,如按键中断里执行延时函数 - 如果想使用【按键控制BEEP】,需要线程环境,或使用【工作队列】,这个实现方法,后面再整理出来
【火牛STM32F103VC】RT-Thread 蜂鸣器BEEP功能验证相关推荐
- 【火牛STM32F103VC】RT-Thread 开发测试环境搭建
前言 最近STM32的芯片价格高的离谱,当然开发板也不例外,最近翻出来一块[火牛STM32F103VCT6]的开发板,吃灰很多年了,那就擦擦,跑跑RT-Thread,主要是我看上面有个[LCD],想搞 ...
- 迅为STM32MP157开发板入门教程之外设功能验证
一.硬件连接 1 电源的连接 请使用开发板自带的 12V 电源连接开发板的 POWER 插座,如图所示. 2 控制台(console)串口 使用数据线连接开发板的 J8 到 PC 机的串口,在这里 J ...
- 使用RT Thread设备框架封装一个I2C设备——DS3231
使用RT Thread设备框架封装一个I2C设备--DS3231 前言 ENV配置 I2C测试 将ds3231封装成一个字符设备 结语 前言 学习rt thread的I2C的时候,恰巧手上的板子留了d ...
- 解决STM8S103K3T6打开BEEP功能遇到的无法操作BEEP_CSR的问题
最近项目用到了STM8S103K3T6的beep功能,调试时遇到了无法更改寄存器BEEP_CSR的值的问题,造成无法开启beep功能:网上一搜全是提到OPTION BYTE的设置问题,不管用IAR或者 ...
- SystemVerilog与功能验证
目录 一.功能验证流程 二.验证手段.验证技术.验证方法学 三.数据类型与编程结构 四.并发进程与进程同步 五.面向对象编程 六.虚接口 七.随机测试 八.继承与多态 九.功能覆盖率 十.断言 一.功 ...
- rt thread studio使用QBOOT和片外flash实现OTA升级
我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...
- RT Thread Free Modbus移植问题整理
RT Thread Free Modbus移植问题整理 问题描述: 在读写寄存器中,写数据正常,只能读1个寄存器的值,多个值会异常. 在移植过程中发现串口(或RS485)数据接收长度异常. 一.环境描 ...
- RT Thread之 Uart2 操作
官网连接:https://docs.rt-thread.org/#/rt-thread-version/rt-thread-standard/programming-manual/device/uar ...
- RT Thread Studio 配置IIC并读取AS5600角度
RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...
最新文章
- Linux下路由表调试工具traceroute
- 如何学好机器学习数据挖掘?这本《数据分析数学基础》图文并茂带你学习入门...
- Ubuntu下配置JAVA环境
- R语言第十一讲 决策树与随机森林
- python建立多台电脑共用的_用virtualenv建立多个Python独立虚拟开发环境
- quill鼠标悬浮 出现提示_jQuery实现鼠标悬停显示提示信息窗口的方法
- 手机MODEM开发(27)---VOLTE SIP 信令流程图
- AES加密的C语言实现
- 新漏洞 RAMpage 曝光:2012年后发布的所有的 Android 手机都危险!
- 软件设计师考试内容纲要
- Flutter mixin用法详解
- 12.UNIX 环境高级编程--线程控制
- 用Python - Requests给项目加个短信验证码注册登录,只花了3分钟
- android+关闭屏幕旋转,Android:即使设备自动旋转屏幕关闭,如何强制反向纵向?...
- 房子装饰风水有哪些讲究和忌讳
- 微信读书增长策略:“无限卡会员业务”
- oppor15android10怎么降级,OPPO R15系统降级教程_OPPO R15怎么回退到原来旧版本系统
- 带你揭秘华为5G为何地表最强
- 台式计算机内存是什么问题,如何解决台式机上内存不足的问题
- R语言 cowplot包快速拼图
热门文章
- Eclipse快捷键耍帅大全
- 烟草专卖局反扑:控烟不能“绝对化”“扩大化”
- OKHttp五大拦截器
- 寒假预备役--打牌的兄弟俩 博弈
- 加快程序速度的多种方法
- Python程序设计与科学计算精录总结Episode.4 Python进阶:自动化办公应用(基于Michael导师Python课程与VS2019)
- 打动人心的演讲方法有哪些
- python和尚念经:实例化对象、调用方法、最全属性、最全内置函数
- 关于Uber优步无法解除默认绑定支付方式和百度钱包无法解除银行卡/信用卡绑定的问题...
- STM32低功耗模式解读