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

目录

  • API (机翻)
  • 上机实战
    • 配置
  • 初始化和实验
    • 实验结果
    • 整体代码
      • myUart.c
      • myUart.h
      • myTask.c
      • myTask.h
      • main.c
      • main.h

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


API (机翻)

官方UART API 手册

void 	UART_close (UART_Handle handle)
关闭由UART句柄指定的UART外围设备int_fast16_t 	UART_control (UART_Handle handle, uint_fast16_t cmd, void *arg)
在给定的UART_Handle上执行实现特定的特性void 	UART_init (void)
初始化UART模块UART_Handle 	UART_open (uint_least8_t index, UART_Params *params)
初始化给定的UART外围设备void 	UART_Params_init (UART_Params *params)
初始化UART_Params结构体为其默认值int_fast32_t 	UART_write (UART_Handle handle, const void *buffer, size_t size)
用于在启用中断的情况下将数据写入UARTint_fast32_t 	UART_writePolling (UART_Handle handle, const void *buffer, size_t size)
向UART写入数据的函数,它轮询外围设备以等待可以写入新数据。此API的使用与UART_write()
的使用是互斥的void 	UART_writeCancel (UART_Handle handle)
取消调用UART_write()int_fast32_t 	UART_read (UART_Handle handle, void *buffer, size_t size)
用于从启用中断的UART读取数据int_fast32_t 	UART_readPolling (UART_Handle handle, void *buffer, size_t size)
从UART读取数据而不中断。此API必须与UART_read()互斥使用void 	UART_readCancel (UART_Handle handle)
取消调用UART_read()

上机实战

配置

在这里插入图片描述
LED1用于提示单片机正常运行
在这里插入图片描述

初始化和实验

/**  ======== mainThread ========*/
void *mainThread(void *arg0)
{My_Task_Init(LED_Task, 1, 1024);My_Uart_Init(&huart1, USB_UART, 115200);while(1){UART_printf(huart1, "MSP432P401R in 115200\r\n");usleep(1000);}
}

实验结果

在这里插入图片描述
点击发送
在这里插入图片描述
如图收发实验成功

整体代码

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(handle, Uart_Rx_Buffer, Uart_Rx_Buffer_Size);
}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, Uart_Rx_Buffer_Size);
}#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[Uart_Tx_Buffer_Size] = {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 32
#define Uart_Tx_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_ */

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/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);while(1){UART_printf(huart1, "MSP432P401R in 115200\r\n");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/400761.shtml

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

相关文章

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

【 Grey Hack 】万金油脚本:常见端口漏洞检测

目录脚本源码用法效果及示例SSH 端口FTP 端口版本&#xff1a;Grey Hack v0.7.3618 - Alpha 适用于SSH (22) 端口、FTP (21) 端口、HTTP (80) 端口、SMTP (25) 端口及3306/3307 端口 。 脚本源码 if params.len ! 2 or params[0] "-h" or params[0] "--help…

JUC源码学习笔记1——AQS和ReentrantLock

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

【 Grey Hack 】万金油脚本:常见端口获取shell

目录脚本源码用法效果及示例成功示例FTP &#xff08;21&#xff09;端口HTTP &#xff08;80&#xff09;端口失败示例版本&#xff1a;Grey Hack v0.7.3618 - Alpha 适用于SSH (22) 端口、FTP (21) 端口、HTTP (80) 端口、SMTP (25) 端口及3306/3307 端口。 脚本源码 if pa…

ECharts整合HT#160;for#160;Web的网络拓扑图应用

ECharts图形组件在1.0发布的时候我就已经有所关注&#xff0c;今天在做项目的时候遇到了图标的需求&#xff0c;在HT for Web上也有图形组件的功能&#xff0c;但是在尝试了下具体实现后&#xff0c;发现HT for Web的图形组件是以矢量的格式来呈现的&#xff0c;在展现上可以有…

一个月后,我们又从 MySQL 双主切换成了主 - 从!

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

【 Grey Hack 】万金油脚本:常见端口获取Password

目录脚本源码用法效果及示例SSH &#xff08;80&#xff09;端口FTP &#xff08;21&#xff09;端口HTTP &#xff08;80&#xff09;端口失败示例SMTP &#xff08;25&#xff09;端口版本&#xff1a;Grey Hack v0.7.3618 - Alpha 适用于SSH (22) 端口、FTP (21) 端口、HTTP…