0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【HarmonyOS HiSpark Wi-Fi IoT 套件试用连载】Pwm调节蜂鸣器声音

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-10-31 15:12 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文来源电子发烧友社区,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2289274_1_1.html


1. PWM简介
数字信号只有高/低电平两种状态。在连续的一段时间内,让同一个输出引脚上输出不同状态的高/低电平,可以实现输出方波信号。通过CPU控制GPIO引脚状态能够实现这种功能,但每次状态变化都需要CPU主动控制,会造成CPU计算资源的浪费。芯片的PWM模块无须CPU主动控制即可输出连续的方波信号。在有PWM模块的芯片中,CPU只需要向PWM模块设定方波的一些参数,就可以实现在没有CPU控制的情况下,输出一定频率的连续方波信号。另外,PWM模块可以控制输出方波在一个周期内高电平和低电平所占的时间比例,即占空比。
2. 板上资源
板上有两个蜂鸣器,都是接到GPIO9号端口上的。GPIO9又是和pwm0口复用的。
交通板和气体检测板上各有一个蜂鸣器,接到了GPIO9号口上。所以资源很清晰明了了,下一步就是开干写代码。
pYYBAGK2ue2AGedxAAmFSZ3BAAo646.jpg 
pYYBAGK2ueSAUymwAAJ9bJUMXjQ885.jpg

3. 代码逻辑
线程起来之后就是驱动蜂鸣器响,按下按键则蜂鸣器停止发声。
  1. static void *PWMBeepTask(const char *arg)
  2. {
  3. while (1) {
  4. if (g_beepState) {
  5. IoTPwmStart(IOT_PWM_PORT_PWM0, 50, 4000);
  6. } else {
  7. IoTPwmStop(IOT_PWM_PORT_PWM0);
  8. }
  9. if (g_iState == 0xffff) {
  10. g_iState = 0;
  11. break;
  12. }
  13. }
  14. }
  15. static void OnButtonPressed(const char *arg)
  16. {
  17. (void) arg;
  18. g_beepState = !g_beepState;
  19. printf("PRESS_KEY!n");
  20. g_iState++;
  21. }
  22. static void StartPWMBeepTask(void)
  23. {
  24. osThreadAttr_t attr;
  25. IoTGpioInit(IOT_GPIO_KEY);
  26. IoSetFunc(IOT_GPIO_KEY, 0);
  27. IoTGpioSetDir(IOT_GPIO_KEY, IOT_GPIO_DIR_IN);
  28. IoSetPull(IOT_GPIO_KEY, IOT_IO_PULL_UP);
  29. IoTGpioRegisterIsrFunc(IOT_GPIO_KEY, IOT_INT_TYPE_EDGE, IOT_GPIO_EDGE_FALL_LEVEL_LOW, OnButtonPressed, NULL);
  30. IoTGpioInit(IOT_PWM_BEEP);
  31. IoSetFunc(IOT_PWM_BEEP, 5);
  32. IoTGpioSetDir(IOT_PWM_BEEP, IOT_GPIO_DIR_OUT);
  33. IoTPwmInit(IOT_PWM_PORT_PWM0);
  34. IoTWatchDogDisable();
  35. attr.name = "PWMBeepTask";
  36. attr.attr_bits = 0U;
  37. attr.cb_mem = NULL;
  38. attr.cb_size = 0U;
  39. attr.stack_mem = NULL;
  40. attr.stack_size = 1024;
  41. attr.priority = osPriorityNormal;
  42. if (osThreadNew((osThreadFunc_t)PWMBeepTask, NULL, &attr) == NULL) {
  43. printf("[StartPWMBeepTask] Falied to create PWMBeepTask!n");
  44. }
  45. }
复制代码
写完代码就是编译,编译前要修改device/soc/hisilicon/hi3861v100/sdk_liteos/build/config/usr_config.mk文件。在这个配置文件中打开I2C,PWM驱动宏。搜索字段CONFIG_I2C_SUPPORT,并打开I2C,PWM。配置如下:
# CONFIG_I2C_SUPPORT is not set
CONFIG_I2C_SUPPORT=y
# CONFIG_PWM_SUPPORT is not set

CONFIG_PWM_SUPPORT=y
4. 实物演示
见如下视频

Pwm驱动蜂鸣器,视频演示,详见作者原帖子内容。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • wi-fi
    +关注

    关注

    15

    文章

    2379

    浏览量

    128890
  • HarmonyOS
    +关注

    关注

    80

    文章

    2146

    浏览量

    35567
  • HiSpark
    +关注

    关注

    1

    文章

    156

    浏览量

    7684
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    浅谈Wi-Fi 6E与Wi-Fi 7的关键器件——BAW滤波器新技术

    作者: Qorvo 亚太区无线连接事业部高级行销经理林健富   2020年1月,Wi-Fi联盟正式宣布开放6GHz频段(5925MHz-7125MHz),并将其命名为Wi-Fi 6E。2020年4月
    发表于 09-19 18:29 1319次阅读
    浅谈<b class='flag-5'>Wi-Fi</b> 6E与<b class='flag-5'>Wi-Fi</b> 7的关键器件——BAW滤波器新技术

    如何更新 NuMaker IoT 板上的 Wi-Fi 模块固件?

    更新 NuMaker IoT 板上的 Wi-Fi 模块固件
    发表于 09-04 08:28

    基于 SSID 的 Wi-Fi 定位:与其他定位服务的性能比较

    随着 nRF7000 Wi-Fi 协同 IC 的推出,我们现在可以提供具有 Wi-Fi、蜂窝物联网和 GNSS 功能的完整硅到云定位解决方案。nRF7000 针对 Wi-Fi 网络扫描进行了优化
    发表于 08-31 21:01

    LitePoint Wi-Fi测试软件减轻客户设计负担

    Wi-Fi 7于一年多前获得Wi-Fi联盟认证以来,作为最新一代通信技术,Wi-Fi正逐步成为用户实现无所不在无线连接的新选择。随着每一代Wi-Fi信号复杂性的提升,建议将硬件测试纳
    的头像 发表于 08-06 15:34 893次阅读
    LitePoint <b class='flag-5'>Wi-Fi</b>测试软件减轻客户设计负担

    有没有什么修复方法可以确保 AP 模式下的 Wi-Fi 和 BLE 连接同时正常工作?

    我正在使用 CYBSYSKIT DEV 01 套件。我尝试在 AP 模式下打开 Wi-Fi 并宣传 BLE。我可以宣传 SoftAP 和 BLE。但是,我无法从中央设备连接到 BLE。它可以立即连接并断开连接。有没有什么修复方法可以确保 AP 模式下的
    发表于 07-17 06:13

    科普|公司的Wi-Fi,为什么这么慢?

    大家在公司上班,经常会使用到Wi-Fi。最近这几年,随着时代的发展,高清视频会议等大带宽网络应用越来越普遍。而公司的网络,却非常不给力,频繁卡顿,严重影响使用体验。哪怕IT的同事已经把网络优化得很
    的头像 发表于 06-20 06:06 1057次阅读
    科普|公司的<b class='flag-5'>Wi-Fi</b>,为什么这么慢?

    Wi-Fi 8:开启极高可靠性 (UHR) 连接的新纪元——1

    英国作家狄更斯在《双城记》的开头写道:“这是最好的时代,也是最坏的时代。” 这句话若套用在现今Wi-Fi 的市场现状,何尝不是惊人的相似? 怎么说呢?Wi-Fi 从被发明至今已经经过了20多年的迭代
    发表于 06-13 11:09

    Wi-Fi HaLow如何突破传统Wi-Fi性能瓶颈?

    视频推荐在万物互联的时代,传统Wi-Fi在覆盖范围、功耗、连接数上渐显不足。而Wi-FiHaLow的诞生,正在用黑科技打破传统Wi-Fi的性能瓶颈!今天,我们一起来探究Wi-FiHaL
    的头像 发表于 04-22 11:38 729次阅读
    <b class='flag-5'>Wi-Fi</b> HaLow如何突破传统<b class='flag-5'>Wi-Fi</b>性能瓶颈?

    基于 Wi-Fi 的定位服务

    以下捕获使用 location_wifi_get 函数请求 Wi-Fi 定位服务。该事件的总功耗为 125.85mC,日志显示精确度为 30.0m。 Got location: method
    发表于 04-17 15:16

    nRF Cloud Wi-Fi 定位服务

    、Predictive-GPS、Single-Cell、Multi-Cell 和 Wi-Fi 定位。通过利用 nRF Cloud 的优化定位算法,基于 Nordic SoC 和 模组的产品可在定位用例
    发表于 04-17 15:07

    Wi-Fi 定位服务

    Wi-Fi 是一种著名的无线网络技术,用于设备的局域网和互联网接入。Wi-Fi 通过 Wi-Fi 网络为家庭、办公室和学校等环境提供便捷的无线互联网接入服务。 Wi-Fi 定位是一种
    发表于 04-17 15:01

    Wi-Fi 7 与频率控制的关系

    作者:Poornima Apte 投稿人:DigiKey 北美编辑 2024-12-18 Wi-Fi 需要使用一定范围的无线电频率才能让设备进行通信拨号。多年来,Wi-Fi 一直使用 2.4 GHz
    的头像 发表于 01-25 14:45 1187次阅读
    <b class='flag-5'>Wi-Fi</b> 7 与频率控制的关系

    华为海思正式进入Wi-Fi FEM赛道?

    大家都知道了,2018年11 月离开锐迪科(RDA),前往福建晋江创立三伍微,专注于Wi-Fi射频前端芯片,从路由器Wi-Fi FEM,到手机Wi-Fi FEM,再到IoT FEM全覆
    发表于 12-11 17:42

    摩尔斯微电子发布Wi-Fi HaLow评估套件,加速物联网开发

    近日,全球领先的Wi-Fi HaLow解决方案提供商摩尔斯微电子正式推出一款开创性的评估套件——MM6108-EKH05。这款完全整合的开发平台,旨在推动各行业物联网解决方案的快速发展
    的头像 发表于 12-11 13:40 1052次阅读

    Wi-Fi 4到Wi-Fi 7:网速飙升40倍的无线革命

    1 Wi-Fi技术的快速发展 每一代新的Wi-Fi协议发布,都会带来更高的无线速率。   从Wi-Fi 4到Wi-Fi 7:无线网络技术显著提升,实现了网速的巨大飞跃。    
    的头像 发表于 12-09 10:10 1604次阅读
    从<b class='flag-5'>Wi-Fi</b> 4到<b class='flag-5'>Wi-Fi</b> 7:网速飙升40倍的无线革命