目录

  • API (机翻)
    • 函数
  • 上机实战
    • 配置引脚
    • PWM初始化,实现简易呼吸灯的效果
    • 实验结果
    • 完整代码
      • myPWM.c
      • myPWM.h
      • myTask.c
      • myTask.h
      • main.c
      • main.h

平台:Code Composer Studio 10.4.0
MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件
(MSP-EXP432P401R)


API (机翻)

PWM API 官方手册

函数

void     PWM_close (PWM_Handle handle)
函数关闭由PWM句柄指定的PWM实例int_fast16_t  PWM_control (PWM_Handle handle, uint_fast16_t cmd, void *arg)
函数在给定的PWM_Handle上执行特定的实现特性void  PWM_init (void)
这个函数初始化PWM模块PWM_Handle  PWM_open (uint_least8_t index, PWM_Params *params)
这个函数打开一个给定的PWM实例,并将周期、负载和空闲电平设置为params参数中指定的值void    PWM_Params_init (PWM_Params *params)
函数将PWM_Params结构初始化为默认值int_fast16_t  PWM_setDuty (PWM_Handle handle, uint32_t duty)
命令功能设置指定PWM句柄的占空比。PWM实例在主动高电平输出模式(非开漏)下运行;
0%代表低电平,100%代表高电平。这个API可以被调用,而PWM正在运行&负载必须总是
低于或等于周期。如果调用该函数时发生错误,PWM占空比将保持不变int_fast16_t     PWM_setPeriod (PWM_Handle handle, uint32_t period)
设置指定PWM句柄的周期。这个API可以在PWM运行时调用。周期必须总是大于等于占空比。
如果调用该函数时发生错误,PWM周期将保持不变int_fast16_t  PWM_setDutyAndPeriod (PWM_Handle handle, uint32_t duty, uint32_t period)
设置指定PWM句柄的周期和占空比。这个API必须在PWM运行时调用。周期必须总是大于占空比。
如果在调用函数时发生错误,周期和占空比将保持不变void     PWM_start (PWM_Handle handle)
以当前设置启动指定的PWM句柄void     PWM_stop (PWM_Handle handle)
能停止指定的PWM句柄。输出将被设置为PWM_open()中的参数指定的空闲级别

上机实战

配置引脚

LED1,用于指示单片机正常工作

PWM输出引脚

PWM初始化,实现简易呼吸灯的效果

/**  ======== 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);}
}

实验结果

完整代码

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_ */

MSP432P401R TI Drivers 库函数学习笔记(五)PWM相关推荐

  1. MSP432P401R TI Drivers 库函数学习笔记(八)ADC

    目录 API (机翻) 上机实战 引脚配置 ADC引脚配置 串口引脚配置 指示工作状态的LED1引脚配置 代码部分 ADC初始化和读取函数 myADC.c myADC.h 获取数据并通过串口发送 ma ...

  2. MSP432P401R TI Drivers 库函数学习笔记(七)I2C驱动OLED屏幕

    目录 API (机翻) 上机实战 引脚配置 I2C引脚配置 工作指示灯LED1引脚配置 文件结构 I2C 初始化.读写函数 myI2C.c myI2C.h OLED初始化和测试代码 main.c ma ...

  3. MSP432P401R TI Drivers 库函数学习笔记(六)UART 串口

    目录 API (机翻) 上机实战 配置 初始化和实验 实验结果 整体代码 myUart.c myUart.h myTask.c myTask.h main.c main.h 平台:Code Compo ...

  4. MSP432P401R TI Drivers 库函数学习笔记(四)GPIO

    目录 API 头文件 函数 (机翻) 宏 GPIO驱动程序api返回的通用状态代码 GPIO_PinConfig输出引脚配置宏 GPIO_PinConfig输入引脚配置宏 GPIO_PinConfig ...

  5. MSP432P401R TI Drivers 库函数学习笔记(三)认识任务的创建及图形化配置

    目录 任务的简单创建 图形化配置上手 简简单单点个灯 配置引脚 建立任务 实验结果 整体代码 main.c myTask.c myTask.h 平台:Code Composer Studio 10.4 ...

  6. MSP432P401R TI Drivers 库函数学习笔记(二)认识TI-RTOS (TI-POSIX)

    目录 简介 TI-RTOS FreeRTOS POSIX 运行时对象查看器 (Runtime Object Viewer) TI-POSIX 介绍 在源代码中使用 POSIX TI-POSIX支持的函 ...

  7. MSP432P401R TI Drivers 库函数学习笔记(一)导入工程模板

    目录 从Resource Explorer中导入 从SDK导入 测试 平台:Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 Launc ...

  8. 【K210】K210学习笔记五——串口通信

    [K210]K210学习笔记五--串口通信 前言 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口接收相关定义 K210串口发送接收测试 完整源码 前言 本人大四学生 ...

  9. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

最新文章

  1. react项目开发步骤_成为专业React开发人员的31个步骤
  2. Java设计模式学习06——静态代理与动态代理(转)
  3. 【备忘录】使用mongodb,报db.collection is not a function
  4. 矩阵分析与多元统计12 0-1矩阵 交换矩阵简介
  5. [专栏目录]-环境搭建安装问题笔记目录
  6. 使用jqprint插件完成页面打印
  7. 再谈 $* 和 $@ 在 Bash 中的表现
  8. BZOJ1503(Splay)
  9. 前端学习(3270):js中this的使用call bind
  10. 计算机工作对身体有害吗,在电脑前长时间工作会对身体有害处吗?
  11. LeetCode 35. Search Insert Position
  12. 什么是DevOps?人员,流程和产品的结合,过程、方法与系统的统称
  13. Clickhouse:分区和数值化优化实测
  14. mac格式化sd卡 linux,[原创翻译]为NOOBS格式化SDXC卡(树莓派官方文档)
  15. 微信支付开发java开发_微信公众号支付开发全过程 (java 版)
  16. 济安横断面怎么去水印_济安横断面设计软件
  17. 邮件服务器匿名,ProtonMail最安全且匿名邮箱免费服务
  18. 假设一张纸足够大并且可以无限折叠,假设一张纸足够大并且可以无限折叠,一张纸的厚度是0.5mm,那么这张纸折叠多少次可以到达珠穆朗玛峰的高度8848.43m。
  19. sv- typedef
  20. 机器学习:局部加权线性回归(Locally Weighted Linear Regression)

热门文章

  1. JavaScript代码片段
  2. sql2008 获取表结构说明
  3. AC Again hdoj 1582 搜索
  4. nagios监控之(监控配置)
  5. smarty二维foreach示例[顺代一维数组],再次加强版
  6. 熊猫分发_熊猫新手:第二部分
  7. PHP进程1608占用了9012,swoole (ERRNO 9012): worker exit timeout, forced to terminate
  8. leetcode 82. 删除排序链表中的重复元素 II(map)
  9. r语言r-shiny_使用Shiny和R构建您的第一个Web应用程序仪表板
  10. day01_初识python