鸿蒙开发板Hi3861_通过GPIO12 PWM蜂鸣器播放<涛声依旧>-——基于code-2.0-CANARY
//通过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相关推荐
- 鸿蒙开发板Hi3861模拟SPI驱动JLX12864_LCD(UC1701X)_基于code-2.0
鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码-C文档类资源-CSDN下载鸿蒙开发板驱动晶联讯LCDjlx12864_lcd_hi3861源码博文介绍https://t更多下载资 ...
- 鸿蒙开发板HI3861 利用蜂鸣器播放音乐 open Harmony1.0.0(附cmsis_os2.h源码)
本文利用鸿蒙开发板HI3861在鸿蒙1.0.0源码下利用蜂鸣器播放音乐. pwm_buz.c #include <stdio.h> #include "ohos_init.h&q ...
- 鸿蒙开发板怎么玩?Neptune开发教程---OpenHarmony开发体验-环境搭建-编译-烧录
目录 鸿蒙开发板(Neptune)开发教程-环境搭建-编译-烧录 Neptune简介 介绍特点 开发板参数 引脚 说明 开发环境搭建 linux编译环境搭建 python环境安装 hpm环境安装 wi ...
- 小表妹想学鸿蒙(HarmonyOS)开发板,于是我翻出了所有的鸿蒙开发板,靠,全给我抢走了,简直是野蛮表妹!
目录 1. Neptune(海王星开发板) 2. HiSpark3861开发板 3. 小熊派(Hi3861芯片) 4. HiSpark 3518开发板 5. HiSpark 3516开发板 总结: 小 ...
- AT指令联网---以鸿蒙开发板为例
AT指令联网 什么是AT指令? 常用的AT指令集 鸿蒙Hi3861通过AT指令联网 后续 什么是AT指令? AT指令是应用于终端设备与PC应用之间的连接与通信的指令.AT 即Attention.每个A ...
- 超级便宜的鸿蒙开发板环境搭建-编译-烧录
超级便宜的鸿蒙开发板环境搭建-编译-烧录 1.下载代码.编译工具和烧写工具 打开https://gitee.com/hihopeorg/Neptune-HarmonyOS-IOT下载代码 打开http ...
- 华为发布鸿蒙开发版,华为发布首款鸿蒙开发板,基于RISC-V架构,软硬生态一起抓?...
原标题:华为发布首款鸿蒙开发板,基于RISC-V架构,软硬生态一起抓? 华为已经官宣了,6月2日将鸿蒙OS将正式转正,面向普通消费者正式升级体验,到时候华为的手机可以升级成鸿蒙了,同时华为还会带来基于 ...
- 鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢?
鸿蒙开发板hi3861 hispark code 2.0 canary金丝雀版本,gpio如何上拉电阻呢? code 2.0 LTS支持,canary没有这个功能呢 IoSetPull(WIFI_IO ...
- 华为鸿蒙开发板-Hi3516DV300硬件设计原理图PCB硬件
点击下载:华为鸿蒙开发板-Hi3516DV300硬件设计原理图&PCB&硬件
最新文章
- X86智能相机视觉系统解决方案
- python创建一个txt文件-python新建txt文件,并逐行写入数据
- 微信和QQ消息撤回可见app(仅限安卓手机系统的童鞋哟,本人亲测有效)
- 一分钟教你学会python_十分钟教你学会python编写小游戏
- 「SVN」Linux下svn命令使用的实践,个人记录~=傻瓜教程
- WebKit DOM Event (二)
- Dubbo集成Zookeeper的实现原理
- attachment delete deletion commit work issue
- XShell 将Linux文件上传、下载到Windows下(rz上传、sz下载)
- Python3基础 try-指定except-as reason 捕获打开一个不存在的文件的时候,会产生OSError异常的示例
- 计算机视觉 CS231n Course Introduction
- VS2010 常用快捷键
- 微信小程序视频基本操作
- PreScan快速入门到精通第三讲快速搭建第一个自动驾驶仿真模型
- Eclipse菜单栏翻译
- java 时间英文格式_Java英文日期格式解析
- 【C++】-- STL容器适配器之priority_queue
- 【分析】魔兽争霸3的MPQ文件及模型格式分析
- Win10 虚拟桌面
- mvc2 mvc_MVC之外的世界