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

目录

  • API
    • 头文件
    • 函数 (机翻)
      • GPIO驱动程序api返回的通用状态代码
      • GPIO_PinConfig输出引脚配置宏
      • GPIO_PinConfig输入引脚配置宏
      • GPIO_PinConfig中断配置宏
      • 特殊的GPIO_PinConfig配置宏
    • 类型别名
  • 示例
    • 配置引脚示例
    • 配置外部中断示例
  • 上机实战
    • 配置引脚
    • main.c
    • myTask.c
    • myTask.h
    • 实验结果

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


API

GPIO API官方手册

头文件

#include <ti/drivers/GPIO.h>

函数 (机翻)

void 	GPIO_clearInt (uint_least8_t index)
清除GPIO管脚中断标志
void 	GPIO_disableInt (uint_least8_t index)
禁用GPIO脚中断
void 	GPIO_enableInt (uint_least8_t index)
使能GPIO脚中断
void 	GPIO_getConfig (uint_least8_t index, GPIO_PinConfig *pinConfig)
获取gpio引脚的当前配置
void 	GPIO_init ()
初始化GPIO模块
uint_fast8_t 	GPIO_read (uint_least8_t index)
读取GPIO管脚的值
void 	GPIO_setCallback (uint_least8_t index, GPIO_CallbackFxn callback)
绑定回调函数到GPIO脚中断
int_fast16_t 	GPIO_setConfig (uint_least8_t index, GPIO_PinConfig pinConfig)
配置gpio管脚
void 	GPIO_toggle (uint_least8_t index)
切换GPIO的当前状态
void 	GPIO_write (uint_least8_t index, unsigned int value)
将该值写入GPIO管脚

GPIO驱动程序api返回的通用状态代码

#define 	GPIO_STATUS_RESERVED   (-32)
//通用GPIO状态码保留偏移量
#define 	GPIO_STATUS_SUCCESS   (0)
//GPI_setConfig()返回成功的状态代码
#define 	GPIO_STATUS_ERROR   (-1)
//GPI_setConfig()返回的通用错误状态代码

GPIO_PinConfig输出引脚配置宏

#define 	GPIO_CFG_OUTPUT
引脚是输出引脚
#define 	GPIO_CFG_OUT_STD
引脚是是主动输出高/#define 	GPIO_CFG_OUT_OD_NOPULL
输出引脚是开漏模式
#define 	GPIO_CFG_OUT_OD_PU
输出引脚是开漏上拉
#define 	GPIO_CFG_OUT_OD_PD
输出引脚是开漏下拉
#define 	GPIO_CFG_OUT_STR_LOW
将输出引脚输出强度设置为低
#define 	GPIO_CFG_OUT_STR_MED
将输出引脚输出强度设置为中
#define 	GPIO_CFG_OUT_STR_HIGH
将输出引脚输出强度设置为高
#define 	GPIO_CFG_OUT_HIGH
设置引脚输出为1
#define 	GPIO_CFG_OUT_LOW
设置引脚输出为0

GPIO_PinConfig输入引脚配置宏

#define 	GPIO_CFG_INPUT
引脚是输入引脚 
#define 	GPIO_CFG_IN_NOPULL
输入引脚不内部上拉\下拉
#define 	GPIO_CFG_IN_PU
输入引脚内部上拉
#define 	GPIO_CFG_IN_PD
输入引脚不内部下拉

GPIO_PinConfig中断配置宏

#define 	GPIO_CFG_IN_INT_NONE
没有中断
#define 	GPIO_CFG_IN_INT_FALLING
在下降沿触发中断
#define 	GPIO_CFG_IN_INT_RISING
在上升沿触发中断
#define 	GPIO_CFG_IN_INT_BOTH_EDGES
在上升沿和下降沿触发中断
#define 	GPIO_CFG_IN_INT_LOW
低电平触发中断
#define 	GPIO_CFG_IN_INT_HIGH
高电平触发中断

特殊的GPIO_PinConfig配置宏

#define 	GPIO_CFG_IN_INT_ONLY
//GPIO_PinConfig参数中以或运算通知GPIO_setConfig()只配置GPIO输入引脚的中断属性
#define 	GPIO_DO_NOT_CONFIG
//使用这个GPIO_PinConfig宏来通知GPIO_init()不要配置相应的pin

类型别名

typedef uint32_t 	GPIO_PinConfig
GPIO管脚配置参数
typedef void(* 	GPIO_CallbackFxn) (uint_least8_t index)
GPIO回调函数名

示例

// Import GPIO Driver definitions
#include <ti/drivers/GPIO.h>
// Define names for GPIO pin indexes
#define BUTTON 0
#define LED    1
// One-time init of GPIO driver
GPIO_init();
// Read GPIO pin
unsigned int state = GPIO_read(BUTTON);
// Write to GPIO pin
GPIO_write(LED, state);

配置引脚示例

// Driver header file
#include <ti/drivers/GPIO.h>
// TI Driver configuration
#include "ti_drivers_config.h"
#define LED    CONFIG_GPIO_LED0
#define BUTTON CONFIG_GPIO_BUTTON0
void main()
{// One-time init of GPIO driverGPIO_init();// Configure a button input pinGPIO_setConfig(BUTTON, GPIO_CFG_IN_PU | GPIO_CFG_IN_INT_FALLING);// Configure an LED output pinGPIO_setConfig(LED, GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
}

配置外部中断示例

// Driver header file
#include <ti/drivers/GPIO.h>
// TI Drivers Configuration
#include "ti_drivers_config.h"
// Board file
#include <ti/drivers/Board.h>
// GPIO button call back function
void gpioButton0Fxn(uint_least8_t index);
main()
{// One-time Board initializationBoard_init();// One-time init of GPIO driverGPIO_init();// Turn on user LEDGPIO_write(CONFIG_GPIO_LED0, CONFIG_GPIO_LED_ON);// install Button callbackGPIO_setCallback(CONFIG_GPIO_BUTTON0, gpioButton0Fxn);// Enable interruptsGPIO_enableInt(CONFIG_GPIO_BUTTON0);
}
//
//  ======== gpioButton0Fxn ========
//  Callback function for the GPIO interrupt on CONFIG_GPIO_BUTTON0
//
//  Note: index is the GPIO id for the button which is not used here
//
void gpioButton0Fxn(uint_least8_t index)
{// Toggle the LEDGPIO_toggle(CONFIG_GPIO_LED0);
}

上机实战

配置引脚

在这里插入图片描述
继续在syscfg文件中配置引脚

在这里插入图片描述
在这里插入图片描述
build后会在
在这里插入图片描述
中生成对应的映射
在这里插入图片描述
在这里插入图片描述
并在GPIO_init()中自动地初始化,因此若是不需要动态修改引脚配置,调用GPIO_init()就行。

main.c

实现两个回调函数,并在mainThread中启用中断

/**  ======== main_tirtos.c ========*/
#include <stdint.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"/* Driver configuration */
#include "ti_drivers_config.h"void S1_Callback_Function(void)
{usleep(100000);if(!GPIO_read(S1)){GPIO_toggle(LED1);while(!GPIO_read(S1));}
}void S2_Callback_Function(void)
{usleep(100000);if(!GPIO_read(S2)){GPIO_toggle(LED2);while(!GPIO_read(S2));}
}/**  ======== 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)
{GPIO_enableInt(S1);GPIO_enableInt(S2);while(1){}return (NULL);
}

本次实验不需要建立其他任务

myTask.c

/** myTask.c**  Created on: 2021年8月2日*      Author: Royic*/#include <stdint.h>/* POSIX Header files */
#include <pthread.h>/* RTOS header files */
#include <ti/sysbios/BIOS.h>/* Driver configuration */
#include "ti_drivers_config.h"#include "./inc/myTask.h"/* Driver Header files */
#include <ti/drivers/GPIO.h>
// #include <ti/drivers/I2C.h>
// #include <ti/drivers/SPI.h>
// #include <ti/drivers/UART.h>
// #include <ti/drivers/Watchdog.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){}}
}

myTask.h

/** myTask.h**  Created on: 2021年8月2日*      Author: Royic*/#ifndef INC_MYTASK_H_
#define INC_MYTASK_H_/* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>void *mainThread(void *arg0);
void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize);#endif /* INC_MYTASK_H_ */

实验结果

按下S1 LED1反转,按下S2 LED2反转

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

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

相关文章

# Vue3 toRef 和 toRefs 函数

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

二分检索函数lower_bound()和upper_bound()

二分检索函数lower_bound()和upper_bound() 一、说明 头文件&#xff1a;<algorithm> 二分检索函数lower_bound()和upper_bound() lower_bound()&#xff1a;找到大于等于某值的第一次出现upper_bound()&#xff1a;找到大于某值的第一次出现必须从小到大排序后才能用 内…

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

目录API (机翻)函数上机实战配置引脚PWM初始化&#xff0c;实现简易呼吸灯的效果实验结果完整代码myPWM.cmyPWM.hmyTask.cmyTask.hmain.cmain.h平台&#xff1a;Code Composer Studio 10.4.0 MSP432P401R SimpleLink™ 微控制器 LaunchPad™ 开发套件 (MSP-EXP432P401R) API …

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

防火墙配置任务十构建虚拟防火墙任务拓扑图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;打造一…

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;打造一…

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

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

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

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

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

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

计算机是如何启动的?

从打开电源到开始操作&#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…

在WPF中实现玻璃模糊效果

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

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

目录API (机翻)上机实战引脚配置ADC引脚配置串口引脚配置指示工作状态的LED1引脚配置代码部分ADC初始化和读取函数myADC.cmyADC.h获取数据并通过串口发送main.cmain.h任务管理函数myTask.cmyTask.h串口代码myUart.cmyUart.h实验结果平台&#xff1a;Code Composer Studio 10.4.…

PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据

介绍承接上文的PHP 杂谈《重构-改善既有代码的设计》之 重新组织你的函数继续重构方面的内容。这章主要针对数据的重构。1、争论的声音——直接访问Field还是通过函数&#xff08;Accessor&#xff09;访问Field2.修改Array为Object&#xff1a;当你看到一个Array很像一个数据结…

Python迷宫生成器

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

MSP430F5529 DriverLib 库函数I2C驱动OLED屏幕

目录I2C驱动代码MSP430F5529_I2C.cMSP430F5529_I2C.hOLED初始化及测试OLED驱动代码OLED.cOLED.hOLED_Font.h显示效果平台&#xff1a;Code Composer Studio 10.4.0 MSP430F5529 LaunchPad™ Development Kit (MSP‑EXP430F5529LP) I2C驱动代码 P3.0为SDA&#xff0c;P3.1为S…

dolphinscheduler简单任务定义及复杂的跨节点传参

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