摘要:一簡(jiǎn)介脈沖寬度調(diào)制,是英文的縮寫,簡(jiǎn)稱脈寬調(diào)試。是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。廣泛應(yīng)用在從測(cè)量通信到功率控制與變換的許多領(lǐng)域中。功能設(shè)置引腳功能函數(shù)定義參數(shù)表示引腳號(hào)表示復(fù)用功能返回錯(cuò)誤碼以下接口位于。
脈沖寬度調(diào)制(PWM),是英文“Pulse Width Modulation”的縮寫,簡(jiǎn)稱脈寬調(diào)試。 是利用微處理器的數(shù)字輸出來(lái)對(duì)模擬電路進(jìn)行控制的一種非常有效的技術(shù)。廣泛應(yīng)用在從測(cè)量、通信到功率控制與變換的許多領(lǐng)域中。
例如上圖中,圖b)是微處理輸出的數(shù)字信號(hào),實(shí)際上他接到電機(jī)等功率設(shè)備上時(shí),效果相當(dāng)于圖a)。這就是PWM調(diào)制。例如輸出占空比為50%,頻率為10Hz的脈沖,高電平為3.3V.則其輸出的模擬效果相當(dāng)于輸出一個(gè)1.65V的高電平。脈沖調(diào)制有兩個(gè)重要的參數(shù),第一個(gè)就是輸出頻率,頻率越高,則模擬的效果越好。第二個(gè)就是占空比。占空比就是改變輸出模擬效果的電壓大小。占空比越大則模擬出的電壓越大。
HI3861V100 芯片有 15 個(gè) GPIO,引腳分布如下:
其中 PWM 端口有 6 個(gè),每個(gè) GPIO 可復(fù)用成 PWM 的端口如下:
Pin | 管腳名稱 | 復(fù)用信號(hào) |
---|---|---|
2 | GPIO_00 | PWM3_OUT |
3 | GPIO_01 | PWM4_OUT |
4 | GPIO_02 | PWM2_OUT |
5 | GPIO_03 | PWM5_OUT |
6 | GPIO_04 | PWM1_OUT |
17 | GPIO_05 | PWM2_OUT |
18 | GPIO_06 | PWM3_OUT |
19 | GPIO_07 | PWM0_OUT |
20 | GPIO_08 | PWM1_OUT |
27 | GPIO_09 | PWM0_OUT |
28 | GPIO_10 | PWM1_OUT |
29 | GPIO_11 | PWM2_OUT |
30 | GPIO_12 | PWM3_OUT |
31 | GPIO_13 | PWM4_OUT |
32 | GPIO_14 | PWM5_OUT |
以下 GPIO 接口位于 base/iot_hardware/interfaces/kits/wifiiot_lite/wifiiot_gpio.h。
功能 | 初始化GPIO外設(shè) |
---|---|
函數(shù)定義 | unsigned int GpioInit(void) |
參數(shù) | 無(wú) |
返回 | 錯(cuò)誤碼 |
功能 | 設(shè)置GPIO輸出方向 |
---|---|
函數(shù)定義 | unsigned int GpioSetDir(WifiIotGpioIdx id, WifiIotGpioDir dir) |
參數(shù) | id:表示GPIO引腳號(hào) dir:表示GPIO輸出方向 |
返回 | 錯(cuò)誤碼 |
以下擴(kuò)展 GPIO 接口位于 base/iot_hardware/interfaces/kits/wifiiot_lite/wifiiot_gpio_ex.h。
功能 | 設(shè)置GPIO引腳功能 |
---|---|
函數(shù)定義 | unsigned int IoSetFunc(WifiIotIoName id, unsigned char val) |
參數(shù) | id:表示GPIO引腳號(hào) val:表示IO復(fù)用功能 |
返回 | 錯(cuò)誤碼 |
以下 PWM 接口位于 base/iot_hardware/interfaces/kits/wifiiot_lite/wifiiot_pwm.h。
業(yè)務(wù)BUILD.gn中包含路徑
include_dirs = [ "http://utils/native/lite/include", "http://kernel/liteos_m/components/cmsis/2.0", "http://base/iot_hardware/interfaces/kits/wifiiot_lite", ]
功能 | 初始化PWM功能 |
---|---|
函數(shù)定義 | unsigned int PwmInit (WifiIotPwmPort port) |
參數(shù) | port:初始化PWM端口號(hào) |
返回 | 錯(cuò)誤碼 |
功能 | 根據(jù)輸入?yún)?shù)輸出PWM信號(hào) |
---|---|
函數(shù)定義 | unsigned int PwmStart(WifiIotPwmPort port, unsigned short duty, unsigned short freq) |
參數(shù) | port:PWM端口號(hào) duty:占空比 freq:分頻倍數(shù) |
返回 | 錯(cuò)誤碼 |
功能 | 關(guān)閉PWM輸出信號(hào) |
---|---|
函數(shù)定義 | unsigned int PwmStop(WifiIotPwmPort port) |
參數(shù) | port:初始化PWM端口號(hào) |
返回 | 錯(cuò)誤碼 |
編譯時(shí)在業(yè)務(wù)BUILD.gn中包含路徑
include_dirs = [ "http://utils/native/lite/include", "http://kernel/liteos_m/components/cmsis/2.0", "http://base/iot_hardware/interfaces/kits/wifiiot_lite", ]
使用板載的LED來(lái)驗(yàn)證GPIO的PWM功能,在BearPi-HM_Nano開發(fā)板上LED的連接電路圖如下圖所示,LED的控制引腳與主控芯片的GPIO_2連接,所以需要編寫軟件去控制GPIO_2輸出PWM波實(shí)現(xiàn)呼吸燈的效果。
#include #include #include "ohos_init.h"#include "cmsis_os2.h"#include "wifiiot_pwm.h"#include "wifiiot_gpio.h"#include "wifiiot_gpio_ex.h"#define PWM_TASK_STACK_SIZE 512#define PWM_TASK_PRIO 25static void PWMTask(void){ unsigned int i; //初始化GPIO GpioInit(); //設(shè)置GPIO_2引腳復(fù)用功能為PWM IoSetFunc(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_IO_FUNC_GPIO_2_PWM2_OUT); //設(shè)置GPIO_2引腳為輸出模式 GpioSetDir(WIFI_IOT_IO_NAME_GPIO_2, WIFI_IOT_GPIO_DIR_OUT); //初始化PWM2端口 PwmInit(WIFI_IOT_PWM_PORT_PWM2); while (1) { for (i = 0; i < 40000; i += 100) { //輸出不同占空比的PWM波 PwmStart(WIFI_IOT_PWM_PORT_PWM2, i, 40000); usleep(10); } i = 0; }}static void PWMExampleEntry(void){ osThreadAttr_t attr; attr.name = "PWMTask"; attr.attr_bits = 0U; attr.cb_mem = NULL; attr.cb_size = 0U; attr.stack_mem = NULL; attr.stack_size = 512; attr.priority = 25; if (osThreadNew((osThreadFunc_t)PWMTask, NULL, &attr) == NULL) { printf("Falied to create PWMTask!/n"); }}APP_FEATURE_INIT(PWMExampleEntry);
? 由 Leung 寫于 2021 年 10 月 9 日
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/122123.html
摘要:?jiǎn)纹瑱C(jī)在一片集成電路芯片上集成微處理器存儲(chǔ)器接口電路,從而構(gòu)成了單芯片微型計(jì)算機(jī),即單片機(jī)。沒搞懂專欄咋弄的,慢慢摸索吧,本人純新手,讀書人的事沒啥要臉不要臉的,有問題隨便指出,隨便噴,歡迎來(lái)指點(diǎn) 2021-9-25 自己手繪的一張圖,算是簡(jiǎn)單的介紹吧? 對(duì)照實(shí)圖看一下 ? ? ? ?...
摘要:只能在度到度之間運(yùn)動(dòng),超過范圍,舵機(jī)輕則齒輪打壞,重則燒壞內(nèi)部電路舵機(jī)能度轉(zhuǎn)動(dòng)能控制轉(zhuǎn)速。相關(guān)定時(shí)器的參數(shù)設(shè)置定時(shí)器為例編寫相關(guān)的函數(shù)文件相關(guān)函數(shù)開啟添加定時(shí)器的通道和通道的生成開啟使能函數(shù),放置于到中的用戶代碼區(qū)。 ...
摘要:海思交叉編譯虛擬機(jī)搭建查看開發(fā)板提供的引導(dǎo)文檔,先搭建的基礎(chǔ)軟件軟件,然后再解壓交叉編譯器搭建交叉編譯的環(huán)境。 前言 前面進(jìn)行了可以傳輸,那么寫一個(gè)簡(jiǎn)單的C程序來(lái)交叉編譯并傳入運(yùn)行。虛擬機(jī) 上一篇搭建的虛擬機(jī)環(huán)境,包含了sftp傳遞文件,網(wǎng)絡(luò)能ping通,基于上一篇的...
摘要:會(huì)議胸牌破解揭秘背景有幸參加今年月份的上海安全會(huì)議,會(huì)議期間有一個(gè)亮點(diǎn)就是的獨(dú)角獸團(tuán)隊(duì)設(shè)計(jì)了一款電子胸牌供參加人員進(jìn)行破解嘗試,類似于美國(guó)上面的那種解密的比賽,在參會(huì)現(xiàn)場(chǎng)的人都可以參加這種破解,總共道題,規(guī)則是現(xiàn)場(chǎng)會(huì)給每道題謎面,在這塊胸牌 Syscan360會(huì)議胸牌破解揭秘 背景 有幸參加今年11月份的上海Syscan360安全會(huì)議,會(huì)議期間有一個(gè)亮點(diǎn)就是360的獨(dú)角獸團(tuán)隊(duì)設(shè)計(jì)了一款...
閱讀 1599·2023-04-26 02:29
閱讀 3134·2021-10-11 10:58
閱讀 2925·2021-10-08 10:16
閱讀 3185·2021-09-24 09:47
閱讀 1593·2019-08-29 16:56
閱讀 2745·2019-08-29 11:03
閱讀 2030·2019-08-26 13:35
閱讀 3199·2019-08-26 13:34