//通过PWM蜂鸣器实验-A12连接, A12接长脚,蜂鸣器短脚接GND

编译报错参考:

https://blog.csdn.net/txwtech/article/details/119853772

//通过PWM蜂鸣器实验-A12连接, A12接长脚,蜂鸣器短脚接GND
//,by txwtech
#include <stdio.h>
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "iot_gpio.h"
#include "hi_io.h"
#include "iot_pwm.h"
#include "hi_pwm.h"
#include "hi_time.h"
int count1=0;//音符对照表:
//https://www.cnblogs.com/developer-huawei/p/13959852.html
static const uint16_t g_tuneFreqs[]={0,38223, // 1 1046.5,-34052, // 2 1174.7,--30338, // 3 1318.5,--28635, // 4 1396.4,--25511, // 5 1568,---22728, // 6 1760,---20249, // 7 1975.5,---  51021,//  8,5_低音 783.99,   40M=40*1000*1000, 40M/783.99=5102145454,//  9,6_     880.0040495,//  10,7_     987.77    };
static const uint8_t g_scoreNotes[] = {// 《两只老虎》简谱1, 2, 3, 1,    1, 2, 3, 1,   3, 4, 5,  3, 4, 5,5, 6, 5, 4, 3, 1,  5, 6, 5, 4, 3, 1,   1, 8, 1,  1, 8, 1,
};
static const uint8_t g_scoreNotes_txwtech[] = {// 《涛声依旧》简谱6,6,3,5,  6,5,5,1,2,3,3,  3,5,6,5,3,2,3,0,6,5,3,5, 1, 9,8,8,9,1,2,2,   2,6,3,      5,6,5,};// 曲谱时值
static const uint8_t g_scoreDurations[] = {4, 4, 4, 4,    4, 4, 4, 4,   4, 4, 8,  4, 4, 8,3, 1, 3, 1, 4, 4,  3, 1, 3, 1, 4, 4,   4, 4, 8,  4, 4, 8,
};
//txwtech
static const uint8_t g_scoreDurations_txwtech[] = {4, 4, 4, 4,  2,2,4,    2, 2, 4, 4,   2, 4, 1, 1, 2,2, 8,1,4,4,2,2,     4, 2, 2, 4,2,2,4,4,       2,4, 2,    2, 2, 8,
};static void GpioTask(void *arg)
{(void) arg;uint32_t tune;uint16_t freqDivisor;uint32_t tuneInterval;hi_gpio_init();hi_io_set_func(HI_IO_NAME_GPIO_12,HI_IO_FUNC_GPIO_12_PWM3_OUT);  // hi_pwm_init(HI_PWM_PORT_PWM3);  //  hi_pwm_set_clock(PWM_CLK_160M);   hi_pwm_set_clock(PWM_CLK_XTAL);  //while(1){IotGpioValue val=IOT_GPIO_VALUE0;IoTGpioGetOutputVal(HI_IO_NAME_GPIO_12,&val);count1=sizeof(g_tuneFreqs)/sizeof(g_tuneFreqs[0]);printf("count is:  %d\n",count1);printf("execute pwm,value: %d\n",val);if(0){for(size_t i=0;i<sizeof(g_scoreNotes)/sizeof(g_scoreNotes[0]);i++){tune=g_scoreNotes[i];//简谱标记freqDivisor=g_tuneFreqs[tune];//对应的频率tuneInterval=g_scoreDurations[i]*(125 * 1000);//声音的延迟hi_pwm_start(HI_PWM_PORT_PWM3,freqDivisor/2,freqDivisor);//osDelay(tuneInterval);hi_udelay(tuneInterval);hi_pwm_stop(HI_PWM_PORT_PWM3);}}if(1){for(size_t i=0;i<sizeof(g_scoreNotes_txwtech)/sizeof(g_scoreNotes_txwtech[0]);i++){tune=g_scoreNotes_txwtech[i];//简谱标记---freqDivisor=g_tuneFreqs[tune];//对应的频率tuneInterval=g_scoreDurations_txwtech[i]*(125 * 1000);//声音的延迟---hi_pwm_start(HI_PWM_PORT_PWM3,freqDivisor/2,freqDivisor);hi_udelay(tuneInterval);hi_pwm_stop(HI_PWM_PORT_PWM3);}}//验证音准// for(size_t i=0;i<sizeof(g_tuneFreqs)/sizeof(g_tuneFreqs[0]);i++)//  {// tune=g_tuneFreqs[i];//简谱标记---// freqDivisor=tune;// hi_pwm_start(HI_PWM_PORT_PWM3,freqDivisor/2,freqDivisor);// hi_udelay(3*125 * 1000);// hi_pwm_stop(HI_PWM_PORT_PWM3);// }}
}
static void GpioEntry(void)
{osThreadAttr_t attr={0};attr.name="GpioTask";attr.stack_size=4096;attr.priority=osPriorityNormal;if(osThreadNew(GpioTask,NULL,&attr)==NULL){printf("[GpioEntry] create GpioTask failed!\n");}
}
SYS_RUN(GpioTask);
//SYS_RUN(GpioEntry);

build.gn

static_library("pwm_tone_test") {sources = [ "pwm_tone_test.c"]include_dirs = ["//third_party/cmsis/CMSIS/RTOS2/Include","//utils/native/lite/include","//kernel/liteos_m/components/cmsis/2.0","//base/iot_hardware/peripheral/interfaces/kits","//device/hisilicon/hispark_pegasus/sdk_liteos/include"]
}

app目录build.gn

# Copyright (c) 2020 Huawei Device Co., Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.import("//build/lite/config/component/lite_component.gni")lite_component("app") {features = ["pwm_tone_test",]
}

鸿蒙开发板Hi3861_通过GPIO12 PWM蜂鸣器播放<涛声依旧>-——基于code-2.0-CANARY相关推荐

  1. 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0

    鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...

  2. 鸿蒙开发板HI3861 利用蜂鸣器播放音乐 open Harmony1.0.0(附cmsis_os2.h源码)

    本文利用鸿蒙开发板HI3861在鸿蒙1.0.0源码下利用蜂鸣器播放音乐. pwm_buz.c #include <stdio.h> #include "ohos_init.h&q ...

  3. 鸿蒙开发板怎么玩?Neptune开发教程---OpenHarmony开发体验-环境搭建-编译-烧录

    目录 鸿蒙开发板(Neptune)开发教程-环境搭建-编译-烧录 Neptune简介 介绍特点 开发板参数 引脚 说明 开发环境搭建 linux编译环境搭建 python环境安装 hpm环境安装 wi ...

  4. 小表妹想学鸿蒙(HarmonyOS)开发板,于是我翻出了所有的鸿蒙开发板,靠,全给我抢走了,简直是野蛮表妹!

    目录 1. Neptune(海王星开发板) 2. HiSpark3861开发板 3. 小熊派(Hi3861芯片) 4. HiSpark 3518开发板 5. HiSpark 3516开发板 总结: 小 ...

  5. AT指令联网---以鸿蒙开发板为例

    AT指令联网 什么是AT指令? 常用的AT指令集 鸿蒙Hi3861通过AT指令联网 后续 什么是AT指令? AT指令是应用于终端设备与PC应用之间的连接与通信的指令.AT 即Attention.每个A ...

  6. 超级便宜的鸿蒙开发板环境搭建-编译-烧录

    超级便宜的鸿蒙开发板环境搭建-编译-烧录 1.下载代码.编译工具和烧写工具 打开https://gitee.com/hihopeorg/Neptune-HarmonyOS-IOT下载代码 打开http ...

  7. 华为发布鸿蒙开发版,华为发布首款鸿蒙开发板,基于RISC-V架构,软硬生态一起抓?...

    原标题:华为发布首款鸿蒙开发板,基于RISC-V架构,软硬生态一起抓? 华为已经官宣了,6月2日将鸿蒙OS将正式转正,面向普通消费者正式升级体验,到时候华为的手机可以升级成鸿蒙了,同时华为还会带来基于 ...

  8. 鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢?

    鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢? code 2.0 LTS支持,canary没有这个功能呢 IoSetPull(WIFI_IO ...

  9. 华为鸿蒙开发板-Hi3516DV300硬件设计原理图PCB硬件

    点击下载:华为鸿蒙开发板-Hi3516DV300硬件设计原理图&PCB&硬件

最新文章

  1. X86智能相机视觉系统解决方案
  2. python创建一个txt文件-python新建txt文件,并逐行写入数据
  3. 微信和QQ消息撤回可见app(仅限安卓手机系统的童鞋哟,本人亲测有效)
  4. 一分钟教你学会python_十分钟教你学会python编写小游戏
  5. 「SVN」Linux下svn命令使用的实践,个人记录~=傻瓜教程
  6. WebKit DOM Event (二)
  7. Dubbo集成Zookeeper的实现原理
  8. attachment delete deletion commit work issue
  9. XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
  10. Python3基础 try-指定except-as reason 捕获打开一个不存在的文件的时候,会产生OSError异常的示例
  11. 计算机视觉 CS231n Course Introduction
  12. VS2010 常用快捷键
  13. 微信小程序视频基本操作
  14. PreScan快速入门到精通第三讲快速搭建第一个自动驾驶仿真模型
  15. Eclipse菜单栏翻译
  16. java 时间英文格式_Java英文日期格式解析
  17. 【C++】-- STL容器适配器之priority_queue
  18. 【分析】魔兽争霸3的MPQ文件及模型格式分析
  19. Win10 虚拟桌面
  20. mvc2 mvc_MVC之外的世界

热门文章

  1. 来自互联网的悲哀:不是你选择加班,而是 KPI 驯化你
  2. eset nod32 最新升级ID(2009年2月3日更新)
  3. tabelu 凹凸图
  4. 时差 频差 双星定位 matlab,双星时差频差无源定位系统定位算法工程指标分析
  5. 空字符导致字符串截断问题
  6. Linux环境下程序的多核CPU占用率高的问题分析和解决
  7. Smooze for Mac(鼠标增强辅助软件)
  8. android 9.0修改默认壁纸
  9. 华为设备配置策略路由
  10. 原生K8S部署pig微服务项目