日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MSP432P401R TI Drivers 库函数学习笔记(五)PWM

發(fā)布時間:2023/12/9 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MSP432P401R TI Drivers 库函数学习笔记(五)PWM 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

  • API (機翻)
    • 函數(shù)
  • 上機實戰(zhàn)
    • 配置引腳
    • PWM初始化,實現(xiàn)簡易呼吸燈的效果
    • 實驗結(jié)果
    • 完整代碼
      • myPWM.c
      • myPWM.h
      • myTask.c
      • myTask.h
      • main.c
      • main.h

平臺:Code Composer Studio 10.4.0
MSP432P401R SimpleLink? 微控制器 LaunchPad? 開發(fā)套件
(MSP-EXP432P401R)


API (機翻)

PWM API 官方手冊

函數(shù)

void PWM_close (PWM_Handle handle) 函數(shù)關(guān)閉由PWM句柄指定的PWM實例int_fast16_t PWM_control (PWM_Handle handle, uint_fast16_t cmd, void *arg) 函數(shù)在給定的PWM_Handle上執(zhí)行特定的實現(xiàn)特性void PWM_init (void) 這個函數(shù)初始化PWM模塊PWM_Handle PWM_open (uint_least8_t index, PWM_Params *params) 這個函數(shù)打開一個給定的PWM實例,并將周期、負載和空閑電平設(shè)置為params參數(shù)中指定的值void PWM_Params_init (PWM_Params *params) 函數(shù)將PWM_Params結(jié)構(gòu)初始化為默認值int_fast16_t PWM_setDuty (PWM_Handle handle, uint32_t duty) 命令功能設(shè)置指定PWM句柄的占空比。PWM實例在主動高電平輸出模式(非開漏)下運行; 0%代表低電平,100%代表高電平。這個API可以被調(diào)用,而PWM正在運行&負載必須總是 低于或等于周期。如果調(diào)用該函數(shù)時發(fā)生錯誤,PWM占空比將保持不變int_fast16_t PWM_setPeriod (PWM_Handle handle, uint32_t period) 設(shè)置指定PWM句柄的周期。這個API可以在PWM運行時調(diào)用。周期必須總是大于等于占空比。 如果調(diào)用該函數(shù)時發(fā)生錯誤,PWM周期將保持不變int_fast16_t PWM_setDutyAndPeriod (PWM_Handle handle, uint32_t duty, uint32_t period) 設(shè)置指定PWM句柄的周期和占空比。這個API必須在PWM運行時調(diào)用。周期必須總是大于占空比。 如果在調(diào)用函數(shù)時發(fā)生錯誤,周期和占空比將保持不變void PWM_start (PWM_Handle handle) 以當前設(shè)置啟動指定的PWM句柄void PWM_stop (PWM_Handle handle) 能停止指定的PWM句柄。輸出將被設(shè)置為PWM_open()中的參數(shù)指定的空閑級別

上機實戰(zhàn)

配置引腳

LED1,用于指示單片機正常工作

PWM輸出引腳

PWM初始化,實現(xiàn)簡易呼吸燈的效果

/** ======== mainThread ========*/ void *mainThread(void *arg0) {float LED2_G_Duty = 0;int8_t LED2_DIR = 1;My_Task_Init(LED_Task, 1, 1024);My_PWM_Hz_Init(&hpwm1, PWM_1, 1000);while(1){if(LED2_G_Duty >= 100)LED2_DIR = -1;else if(LED2_G_Duty <= 0)LED2_DIR = 1;LED2_G_Duty += LED2_DIR * 0.5;if(LED2_G_Duty < 0)LED2_G_Duty = 0;else if(LED2_G_Duty > 100)LED2_G_Duty = 100;My_PWM_setDuty(&hpwm1, LED2_G_Duty);usleep(1000);} }

實驗結(jié)果

完整代碼

myPWM.c

/** myPWM.c** Created on: 2021年8月2日* Author: Royic*/ // Import PWM Driver definitions#include "./inc/myPWM.h"PWM_Handle hpwm1;void My_PWM_Hz_Init(PWM_Handle *hpwm, uint_least8_t index, uint32_t Frequency) {PWM_Params pwmParams;// Initialize the PWM driver.PWM_init();// Initialize the PWM parametersPWM_Params_init(&pwmParams);pwmParams.idleLevel = PWM_IDLE_LOW; // Output low when PWM is not runningpwmParams.periodUnits = PWM_PERIOD_HZ; // Period is in HzpwmParams.periodValue = Frequency; // Frequency HzpwmParams.dutyUnits = PWM_DUTY_FRACTION; // Duty is in fractional percentagepwmParams.dutyValue = 0; // 0% initial duty cycle// Open the PWM instance*hpwm = PWM_open(index, &pwmParams);if (*hpwm == NULL){// PWM_open() failedwhile (1);}PWM_start(*hpwm); // start PWM with 0% duty cycle }inline void My_PWM_setDuty(PWM_Handle *hpwm, float Percentage) {PWM_setDuty(*hpwm, (uint32_t) (PWM_DUTY_FRACTION_MAX / 100. * Percentage)); // set duty cycle to Duty_Cycle% }

myPWM.h

/** myTask.h** Created on: 2021年8月2日* Author: Royic*/#ifndef INC_MYTASK_H_ #define INC_MYTASK_H_#include "./inc/main.h"void *mainThread(void *arg0); void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize);void *LED_Task(void *arg0);#endif /* INC_MYTASK_H_ */

myTask.c

/** myTask.c** Created on: 2021年8月2日* Author: Royic*//* POSIX Header files */ #include <pthread.h>/* RTOS header files */ #include <ti/sysbios/BIOS.h>#include "./inc/myTask.h"/* Driver Header files */ #include <ti/drivers/GPIO.h>void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize) {pthread_t thread;pthread_attr_t attrs;struct sched_param priParam;int retc;/* Initialize the attributes structure with default values */pthread_attr_init(&attrs);/* Set priority, detach state, and stack size attributes */priParam.sched_priority = priority;retc = pthread_attr_setschedparam(&attrs, &priParam);retc |= pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED);retc |= pthread_attr_setstacksize(&attrs, stacksize);if (retc != 0){/* failed to set attributes */while (1){}}retc = pthread_create(&thread, &attrs, startroutine, NULL);if (retc != 0){/* pthread_create() failed */while (1){}} }void *LED_Task(void *arg0) {while(1){GPIO_toggle(LED1);sleep(1);} }

myTask.h

/** myTask.h** Created on: 2021年8月2日* Author: Royic*/#ifndef INC_MYTASK_H_ #define INC_MYTASK_H_#include "./inc/main.h"void *mainThread(void *arg0); void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize);void *LED_Task(void *arg0);#endif /* INC_MYTASK_H_ */

main.c

/** ======== main_tirtos.c ========*/#include "./inc/main.h"/* POSIX Header files */ #include <pthread.h>/* RTOS header files */ #include <ti/sysbios/BIOS.h>/* Driver configuration */ #include <ti/drivers/Board.h> #include <ti/drivers/GPIO.h>#include "./inc/myTask.h"#include "./inc/myPWM.h"/** ======== main ========*/ int main(void) {/* Call driver init functions */Board_init();GPIO_init();My_Task_Init(mainThread, 1, 1024);BIOS_start();return (0); }/** ======== mainThread ========*/ void *mainThread(void *arg0) {float LED2_G_Duty = 0;int8_t LED2_DIR = 1;My_Task_Init(LED_Task, 1, 1024);My_PWM_Hz_Init(&hpwm1, PWM_1, 1000);while(1){if(LED2_G_Duty >= 100)LED2_DIR = -1;else if(LED2_G_Duty <= 0)LED2_DIR = 1;LED2_G_Duty += LED2_DIR * 0.5;if(LED2_G_Duty < 0)LED2_G_Duty = 0;else if(LED2_G_Duty > 100)LED2_G_Duty = 100;My_PWM_setDuty(&hpwm1, LED2_G_Duty);usleep(1000);} }

main.h

/** main.h** Created on: 2021年8月2日* Author: Royic*/#ifndef INC_MAIN_H_ #define INC_MAIN_H_/* For usleep() */ #include <unistd.h> #include <stdint.h> #include <stddef.h>/* Driver configuration */ #include "ti_drivers_config.h"#endif /* INC_MAIN_H_ */

總結(jié)

以上是生活随笔為你收集整理的MSP432P401R TI Drivers 库函数学习笔记(五)PWM的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产三级按摩推拿按摩 | 成年免费视频 | 免费污片网站 | 一区二区不卡免费视频 | 日本公妇乱淫免费视频一区三区 | 久久久久久久久久久久久av | 在线你懂的视频 | 中文在线а√在线 | 国产日韩激情 | 国产r级在线观看 | 亚洲一区在线免费 | 欧美亚洲成人网 | 一本大道伊人av久久综合 | 成人激情视频网站 | 初音未来打屁股 | 日韩精品一区二区三区无码专区 | 中文字幕视频在线播放 | 最新中文字幕在线观看视频 | 丁香六月婷婷综合 | 波多野结衣网址 | 欧美成人精品在线 | av三级在线观看 | 成人欧美一区二区三区黑人孕妇 | 精品一区电影 | 日韩欧美精品一区二区三区 | 韩国精品视频 | 精品成人一区二区 | 美女被男人桶出白浆喷水 | 人人妻人人爽欧美成人一区 | 翔田千里一区二区三区av | 午夜av毛片 | 国产手机在线 | 日韩有码中文字幕在线 | 国产一区导航 | 精品国产视频一区二区 | 1000部多毛熟女毛茸茸 | 性插插视频 | 欧美大奶在线 | 一区二区三区在线电影 | 99福利视频 | 久久肉 | 国产二区一区 | 男女日批 | 寂寞少妇让水电工爽hd | 亚洲另类色综合网站 | 亚洲欧美日韩国产成人精品影院 | 一区二区三区亚洲视频 | 深夜在线观看 | 亚洲视频在线一区 | 欧美日韩五月天 | 日产精品久久久一区二区 | 国产精品美女自拍视频 | 91久久久久久久久久久久久 | 成年人视频在线看 | 色狠狠综合网 | 69xxx少妇按摩视频 | 理论片国产 | 久久露脸国语精品国产91 | 猫咪av网| 男生和女生一起差差差很痛的视频 | 色多多污污| 97av视频在线 | 亚洲在线视频观看 | 精品中文一区二区三区 | 欧美日韩在线视频播放 | 红桃一区二区三区 | 久久久国产精品久久久 | 最新激情网站 | 国产欧美一区二区三区精品酒店 | 香蕉视频在线免费播放 | 手机av中文字幕 | 少妇av网| 久草香蕉视频 | 国产午夜激情 | 亚洲无人区小视频 | 国产又黄又嫩又滑又白 | 国产情侣91| 伊人精品影院 | 91精品久久人妻一区二区夜夜夜 | 91尤物在线 | 国产一级做a爱免费视频 | jizzjizz美国| 亚洲午夜久久久久久久久红桃 | 欧美日韩一区二区三区电影 | 97国产高清 | 国产网红主播精品av | 色眯眯av | 国产午夜福利片 | 成年精品 | 国产青草视频在线观看 | 九九爱爱视频 | xxxxx69| 日产精品久久久久久久蜜臀 | 亚洲春色www| 超碰免费在线97 | 老司机成人免费视频 | 一区二区精品久久 | 嫩草视频在线播放 | 青青青视频在线播放 |