目录

  • API (机翻)
  • 上机实战
    • 引脚配置
      • ADC引脚配置
      • 串口引脚配置
      • 指示工作状态的LED1引脚配置
    • 代码部分
      • ADC初始化和读取函数
        • myADC.c
        • myADC.h
      • 获取数据并通过串口发送
        • main.c
        • main.h
      • 任务管理函数
        • myTask.c
        • myTask.h
      • 串口代码
        • myUart.c
        • myUart.h
    • 实验结果

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


API (机翻)

ADC API 官方手册

void     ADC_close (ADC_Handle handle)
关闭ADC驱动实例int_fast16_t   ADC_control (ADC_Handle handle, uint_fast16_t cmd, void *arg)
在驱动程序实例上执行特定的实现特性int_fast16_t   ADC_convert (ADC_Handle handle, uint16_t *value)
执行ADC转换uint32_t     ADC_convertToMicroVolts (ADC_Handle handle, uint16_t adcValue)
将原始ADC数据转换为以微伏为单位的数据void    ADC_init (void)
初始化ADC驱动程序ADC_Handle    ADC_open (uint_least8_t index, ADC_Params *params)
初始化ADC外设void    ADC_Params_init (ADC_Params *params)
将ADC_Params结构初始化为其默认值

上机实战

引脚配置

ADC引脚配置

串口引脚配置

指示工作状态的LED1引脚配置

代码部分

ADC初始化和读取函数

myADC.c

/** myADC.c**  Created on: 2021年8月4日*      Author: Royic*/#include "./inc/myADC.h"ADC_Handle hadc1;void My_ADC_Init(ADC_Handle *adcHandle, uint_least8_t index)
{// One-time init of ADC driverADC_init();// initialize optional ADC parametersADC_Params params;ADC_Params_init(&params);params.isProtected = true;// Open ADC channels for usage*adcHandle = ADC_open(index, &params);
}uint32_t Get_Micro_Volts(ADC_Handle *adcHandle)
{uint16_t AdcRaw = 0;// Sample the analog output from the ThermocoupleADC_convert(*adcHandle, &AdcRaw);// Convert the sample to microvoltsreturn ADC_convertToMicroVolts(*adcHandle, AdcRaw);
}

myADC.h

/** myADC.h**  Created on: 2021年8月4日*      Author: Royic*/#ifndef INC_MYADC_H_
#define INC_MYADC_H_#include "./inc/main.h"// Import ADC Driver definitions
#include <ti/drivers/ADC.h>void My_ADC_Init(ADC_Handle *adcHandle, uint_least8_t index);
uint32_t Get_Micro_Volts(ADC_Handle *adcHandle);extern ADC_Handle hadc1;#endif /* INC_MYADC_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/myADC.h"
#include "./inc/myUart.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)
{My_Task_Init(LED_Task, 1, 1024);My_Uart_Init(&huart1, USB_UART, 115200);My_ADC_Init(&hadc1, ADC1);while(1){UART_printf(huart1, "%d\r\n", Get_Micro_Volts(&hadc1));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_ */

任务管理函数

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

串口代码

myUart.c

/** myUart.c**  Created on: 2021年8月3日*      Author: Royic*/#include "./inc/myUart.h"#include <ti/drivers/GPIO.h>UART_Handle huart1;char Uart_Rx_Buffer[Uart_Rx_Buffer_Size] = {0};void Uart_TxCallback_Func(UART_Handle handle, void *buf, size_t count)
{}void Uart_RxCallback_Func(UART_Handle handle, void *buf, size_t count)
{UART_read(huart1, Uart_Rx_Buffer, 32);
}void My_Uart_Init(UART_Handle *huart, uint_least8_t index, uint32_t BaudRate)
{UART_Params uartParams;// Initialize the UART driver.  UART_init() must be called before// calling any other UART APIs.UART_init();// Create a UART with data processing off.UART_Params_init(&uartParams);uartParams.readMode = UART_MODE_CALLBACK;
//  uartParams.writeMode = UART_MODE_CALLBACK;uartParams.writeMode = UART_MODE_BLOCKING;uartParams.readCallback = Uart_RxCallback_Func;uartParams.writeCallback = Uart_TxCallback_Func;uartParams.writeDataMode = UART_DATA_TEXT;uartParams.readDataMode = UART_DATA_TEXT;uartParams.readReturnMode = UART_RETURN_NEWLINE;uartParams.readEcho = UART_ECHO_OFF;uartParams.baudRate = BaudRate;// Open an instance of the UART drivers*huart = UART_open(index, &uartParams);if (*huart == NULL){// UART_open() failedwhile (1);}UART_read(*huart, Uart_Rx_Buffer, 32);
}#include <string.h>
#include <stdarg.h>
#include <stdio.h>
void UART_printf(UART_Handle handle, const char *format,...)
{uint32_t length;va_list args;char TxBuffer[32] = {0};va_start(args, format);length = vsnprintf((char*)TxBuffer, sizeof(TxBuffer)+1, (char*)format, args);va_end(args);UART_write(handle, TxBuffer, length);
}

myUart.h

/** myUart.h**  Created on: 2021年8月3日*      Author: Royic*/#ifndef INC_MYUART_H_
#define INC_MYUART_H_#include "./inc/main.h"// Import the UART driver definitions
#include <ti/drivers/UART.h>#define Uart_Rx_Buffer_Size 32extern char Uart_Rx_Buffer[Uart_Rx_Buffer_Size];void My_Uart_Init(UART_Handle *huart, uint_least8_t index, uint32_t BaudRate);
void UART_printf(UART_Handle handle, const char *format,...);//Example
//My_Uart_Init(&huart1, USB_UART, 115200);
//UART_write(huart1, "OK\r\n", 5);extern UART_Handle huart1;#endif /* INC_MYUART_H_ */

实验结果

接上电位器,打开上位机,转动电位器,得到如下波形

数据单位为微伏。

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

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

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

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

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

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

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

  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. ReactJS学习笔记八:动画

    ReactJS学习笔记八:动画 分类: react学习笔记 javascript2015-07-06 20:27 321人阅读 评论(0) 收藏 举报 react动画 目录(?)[+] 这里只讨论Re ...

  9. 【opencv学习笔记八】创建TrackBar轨迹条

    createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...

最新文章

  1. 艾伦人工智能研究院开源AllenNLP,基于PyTorch轻松构建NLP模型
  2. 数据表的三种基本操作(insert、delete、update)
  3. 月光博客 - 再谈软件保护中软加密和硬加密的安全强度
  4. hdu 1588 Gauss Fibonacci 较难
  5. 《javascript面向对象编程指南》读书笔记
  6. shell中的字符串操作
  7. C++STL(set……)
  8. 5 仓库号xxx的主数据仍然现存不能删除(慎用)
  9. C++ STL list 学习一
  10. 【ACL 2019】预训练语言模型的最新探索
  11. Linux下socket编程的简单实例
  12. http 网络异常请求处理
  13. DragonBones骨骼动画制作软件
  14. 一个字段,就可以判断是否关注公众号,你信吗
  15. 视频直播常见问题与解决办法汇总【系列一】
  16. 计算机中丢失cg,【计算机中丢失dll文件】计算机丢失dll文件_计算机中丢失cg dll-win7之家...
  17. 看了我的mybatis-plus用法,同事也开始悄悄模仿了
  18. 玩乐|杭州夏季纳凉好去处
  19. 嵌入式在各个行业的应用
  20. 天翼云、移动云ubuntu服务器分区和磁盘挂载步骤

热门文章

  1. Iterm2的一些好用法
  2. 使用Docker镜像和仓库
  3. Android学习笔记:TabHost 和 FragmentTabHost
  4. CSS 如何让Table的里面TD全有边框 而Table的右左边框没有
  5. 各个行业纷纷瞅准了这块大蛋糕
  6. objectC 数据类型转换
  7. 赵丽词汇速记5500幻星笔记 (0、1)
  8. sql,dateadd,datediff
  9. 数据库设计方法、规范与技巧
  10. python记录日志_5分钟内解释日志记录—使用Python演练