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

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/400766.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

65个漂亮的WordPress博客主题

原文地址&#xff1a;http://www.goodfav.com/wordpress-blog-themes-3512.html 我收集了一些最好的WordPress博客主题&#xff0c;以帮助新手和高级的博客主&#xff0c;使用WordPress迅速成立一个惊人的博客网站&#xff01; 为核心的博客平台WordPress的启动和使用WordPress…

防火墙配置十大任务之十,构建虚拟防火墙

防火墙配置任务十构建虚拟防火墙任务拓扑图10.11.inside区域的交换机的基本配置&#xff0c;在交换机上开启vlan2&#xff0c;vlan3&#xff0c;vlan4.三个vlan。图10.22.outside区域的Internet基本配置。图10.33.交换机上连接防火墙接口的配置。图10.44.inside区域各个PC的主机…

使用纯 CSS 实现超酷炫的粘性气泡效果

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

利用 squid 反向代理提高网站性能

简介&#xff1a; 本文在介绍 squid 反向代理的工作原理的基础上&#xff0c;指出反向代理技术在提高网站访问速度&#xff0c;增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下&#xff0c;利用 DNS 轮询和 Squid 反向代理技术&#xff0c;实现了网站的负载均…

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

目录API (机翻)上机实战配置初始化和实验实验结果整体代码myUart.cmyUart.hmyTask.cmyTask.hmain.cmain.h平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) API (机翻) 官方UART API 手册 void UA…

Linux 批量杀死进程(详细版本)

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

orapwd创建密码文件

在CMD里输入命令如下&#xff1a;C:\Documents and Settings\Administrator>orapwd Usage: orapwd file<fname> password<password> entries<users> where file - name of password file (mand), password - password for SYS (mand), entries - maximum …

MSP432 库函数实现 PID 电机调角度、调速

目录引脚配置PWM引脚外部中断测量编码器引脚配置代码部分初始化编码器解读Encoder.cEncoder.h测速和控制部分卡尔曼滤波器&#xff0c;用于对所测速度进行滤波kalman.ckalman.h实验效果速度滤波效果控速效果控角效果平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R …

CSS基本知识点——带你走进CSS的新世界

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

JS 三级联动 下拉列表

<!-- 我的思路&#xff1a; 1.页面加载时便进入后台获得第一级的值&#xff1b; 2.当第一级的值改变时&#xff0c;清空第二级和第三级的值&#xff0c;并加载第二级的值 3.当第二级的值改变时&#xff0c;清空第三级的值&#xff0c;并加载第三级的值 --><table> …

20.网页卷去的距离与偏移量

我们先来看看下面的图&#xff1a; scrollLeft:设置或获取位于给定对象左边界与窗口中目前可见内容的最左端之间的距离 &#xff0c;即左边灰色的内容。 scrollTop:设置或获取位于对象最顶端与窗口中可见内容的最顶端之间的距离 &#xff0c;即上边灰色的内容。 offsetLeft:获取…

【电赛】一阶卡尔曼滤波器 滤波效果良好

目录代码kalman.ckalman.h滤波效果很久以前抄的&#xff0c;忘了是从哪弄的了 我把它改成了这种结构体指针传参的形式&#xff0c;方便在比赛中应用。应用举例见MSP432 PID 电机调角度、调速。 它曾助力笔者获2020年电赛省一等奖。 代码 Q:过程噪声协方差 Q参数调滤波后的曲线…

130. Surrounded Regions

题目&#xff1a; Given a 2D board containing X and O, capture all regions surrounded by X. A region is captured by flipping all Os into Xs in that surrounded region. For example, X X X X X O O X X X O X X O X XAfter running your function, the board should …

计算机是如何启动的?

从打开电源到开始操作&#xff0c;计算机的启动是一个非常复杂的过程。 我一直搞不清楚&#xff0c;这个过程到底是怎么回事&#xff0c;只看见屏幕快速滚动各种提示......这几天&#xff0c;我查了一些资料&#xff0c;试图搞懂它。下面就是我整理的笔记。 零、boot的含义 先问…

hdu 1536(博弈)

传送门&#xff1a;S-Nim 题意&#xff1a;给n个数的集合s&#xff0c; 再给m 组数据&#xff0c;每组表示 k 堆石子&#xff0c;每次可以取的个数只能是集合s中的数量。问先手胜还是输&#xff1f; 分析&#xff1a;sg函数的经典运用&#xff0c;先预处理出所有数量为0~10000的…

写了个 Markdown 命令行小工具,希望能提高园友们发文的效率!

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

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

目录API (机翻)上机实战引脚配置I2C引脚配置工作指示灯LED1引脚配置文件结构I2C 初始化、读写函数myI2C.cmyI2C.hOLED初始化和测试代码main.cmain.hOLED 驱动程序OLED.cOLED.hOLED_Font.h任务管理myTask.cmyTask.h显示效果平台&#xff1a;Code Composer Studio 10.4.0 MSP432…

xcode5. 安装cocos2d-x 学习中。。。

xcode5. 安装cocos2d&#xff0d;x 学习中。。。 找了一些帖子 没搞出来&#xff0c;后来找到原因了 如今的cocos2d版本号在xcode.5上 没右模版了。用命令行 来运行。看了官方的文档。最终攻克了&#xff5e;&#xff5e;&#xff5e; 对于自己解决的问题都会感到点兴奋。。…

在WPF中实现玻璃模糊效果

在WPF中实现玻璃模糊效果还是比较简单的&#xff0c;主要方式如下&#xff1a; 添加一个Rectangle或其它控件作为玻璃放到顶部图层 将底部图像作为Brush&#xff08;大多数的时候用VisualBrush&#xff09;填充到Rectangle中 对该Rectangle添加高斯模糊效果 在该Rectangle上叠加…

【2013.4.6】微软暑期实习生答案(zz)

这套题难度评价&#xff1a;与去年相比技术上更多考得是语言细节而非算法&#xff0c;很多常规的智力题都是以前老题了&#xff0c;所以总体感觉难度不是很大&#xff0c;但是想拿高分也比较困难。最后吐槽下出题&#xff0c;居然有两道题不严谨&#xff0c;确实让很多同学在做…