目录

  • 任务的简单创建
  • 图形化配置上手
    • 简简单单点个灯
      • 配置引脚
      • 建立任务
      • 实验结果
  • 整体代码
    • main.c
    • myTask.c
    • myTask.h

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


任务的简单创建

根据上篇机翻的函数作用,及观察本例程模板,可总结出使用默认参数初始化线程任务的函数:
三个参数分别是线程任务名,优先级和堆栈大小

void My_Task_Init(void (*TaskName)(void *arg), 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, TaskName, NULL);if (retc != 0){/* pthread_create() failed */while (1){}}
}

为方便管理
我在工程目录下新建了src文件夹和inc文件夹
在其中建立了myTask.c 、myTask.h,同时还把工程的一些文件名改了,并删掉了例程模板中的empty.c

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"/* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>#include "./inc/myTask.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_void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize);#endif /* INC_MYTASK_H_ */

图形化配置上手

打开.syscfg格式的文件,此为CCS用于图形化配置的文件

应该是之前TI出的图形化配置工具TI PinMux的CCS内置版(下图为TI PinMux)

简简单单点个灯

配置引脚


由原理图可知,P1.0 控制LED1,LED2为RGB灯,其中P2.0控制其中的红灯
仿造原工程修改其中的GPIO模块,设LED1为输出模式,正常(非开漏)模式,驱动能力中等,初始电平为低电平,不上拉下拉

Use Hardware选项是可选板子预设好的GPIO种类,选为None后可在下面的GPIO Pin改为自定义引脚。

同理,设置LED2的红灯

建立任务

在myTask.c中建立两个任务
其中一个1s反转一次LED1,另一个2s反转一次LED2的红灯
sleep(n)用于秒级的挂起
usleep(n)用于微秒级的挂起


#include <ti/drivers/GPIO.h>
void *LED1_Task(void *arg0)
{while (1){sleep(1);GPIO_toggle(LED1);}
}void *LED2_Task(void *arg0)
{while (1){sleep(2);GPIO_toggle(LED2);}
}

在myTask.h中声明

extern void *LED1_Task(void *arg0);
extern void *LED2_Task(void *arg0);

在main中初始化

int main(void)
{/* Call driver init functions */Board_init();GPIO_init();My_Task_Init(LED1_Task, 1, 1024);My_Task_Init(LED2_Task, 1, 1024);BIOS_start();return (0);
}

实验结果

可以观察到两个任务近似并行同时执行,LED1 约1s翻转一次,LED2 约2s翻转一次。

整体代码

main.c

/**  ======== 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"/**  ======== main ========*/
int main(void)
{/* Call driver init functions */Board_init();GPIO_init();My_Task_Init(LED1_Task, 1, 1024);My_Task_Init(LED2_Task, 1, 1024);BIOS_start();return (0);
}

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"/* For usleep() */
#include <unistd.h>
#include <stdint.h>
#include <stddef.h>#include "./inc/myTask.h"#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 *LED1_Task(void *arg0)
{while (1){sleep(1);GPIO_toggle(LED1);}
}void *LED2_Task(void *arg0)
{while (1){sleep(2);GPIO_toggle(LED2);}
}

myTask.h

/** myTask.h**  Created on: 2021年8月2日*      Author: Royic*/#ifndef INC_MYTASK_H_
#define INC_MYTASK_H_void My_Task_Init(void *(*startroutine)(void *), int priority, size_t stacksize);extern void *LED1_Task(void *arg0);
extern void *LED2_Task(void *arg0);#endif /* INC_MYTASK_H_ */

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

  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 库函数学习笔记(五)PWM

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

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

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

  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. 【AVR ASF4库函数学习笔记】一、使用Microchip Studio图形化配置工程

    目录 新建工程 配置 点灯 效果 平台:Microchip Studio (原Atmel Studio 7) 欣世纪 DMAVR-L Atmega 128A - AU 新建工程 选择所用的芯片后点击C ...

  9. TIVA_C学习笔记三

    TIVA_C学习笔记三 关于解决keil下不了的问题 通过摸索我有发现了另一种下载方式,使用Ti官方的软件LM Flash Programmer软件.但这个软件需要的是.bin文件,keil默认生成的 ...

最新文章

  1. (30)导入时如何定制spring-boot依赖项的版本【转载】【从零开始学Spring Boot】...
  2. 关卡 动画 蓝图 运行_上车喂,建模大神带你学UE4在编辑器启动时是如何运行蓝图的...
  3. 账簿登记重要十条规则
  4. 39行代码AC_HDU-6740 2019CCPC秦皇岛 J MUV LUV EXTRA(KMP变形)
  5. Linux 系统服务管理(启动服务/停止服务/重启服务)的命令 - chkconfig/service/systemctl
  6. 如何将风险应用加入白名单_理财要如何将资金分散呢?可以参考风险分散和分享经济红利的思路...
  7. GOF设计模式之桥接模式
  8. IE 7 Standard 模式问题总结
  9. I2C总线学习—查缺补漏—S3C2440的I2C控制器
  10. [转帖] 启动多个Tomcat 需要修改的端口
  11. H3C交换机修改时间
  12. 抖音快手无水印去水印方法19年11月最新
  13. mybatis中获取当前时间_mybatis 在xml文件中获取当前时间的sql
  14. linux添加变色龙引导,变色龙引导工具下载
  15. 国际结算三大方式之一——托收
  16. iOS 字体转换
  17. python中return0与return1_return 0 和return 1的区别
  18. H5实现win10日历效果
  19. 微信小程序 富文本 换行问题 文本溢出使用省略号
  20. React组件通信-非父子组件间的通信

热门文章

  1. 两个重要而又容易被忽视的角色
  2. 在应用程序级别以外使用注册为 allowDefinition='MachineToApplication' 的节是错误
  3. 设计师的10种范式转变
  4. 请不要更多的基本情节
  5. web数据交互_通过体育运动使用定制的交互式Web应用程序数据科学探索任何数据...
  6. 传智播客软件测试第一期_播客:冒险如何推动一位软件工程师的职业发展
  7. chrome前端开发工具_精通Chrome开发人员工具:更高级别的前端开发技术
  8. 随机加密_随机艺术和加密圣诞树
  9. 机器学习图像源代码_使用带有代码的机器学习进行快速房地产图像分类
  10. 深入分析Spring 与 Spring MVC容器