日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/9 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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_ */

總結

以上是生活随笔為你收集整理的MSP432P401R TI Drivers 库函数学习笔记(六)UART 串口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。