L1306——串口的配置

news2024/11/29 20:53:11

这里需要介绍一下串口的时钟来源,串口的时钟来源一共有三个,分别是:

BUSCLK由内部高频振荡器提供的CPU时钟,通常芯片出厂时设置为了32MHz。

MFCLK:只能使用固定的4MHz时钟(参考用户手册132页)。开启的话需要配置时钟树的SYSOSC_4M分支,才能够正常开启。

LFCLK:由内部的低频振荡器提供时钟(32KHz)。在运行、睡眠、停止和待机模式下有效,使用该时钟可以实现更低的功耗。

在时钟树中打开MFCLK的开关。

本案例使用的是MFCLK作为串口的时钟来源,开启MFCLK需要在sysconfig中配置时钟树在sysconfig左侧的选项卡中找到SYSCTL选项,在选项页中找到 Use Clock Tree 进行打勾,以开启时钟树的配置。

在sysconfig中,左侧可以选择MCU的外设,我们找到并点击UART选项卡,在UART中点击ADD,就可以添加串口外设。 

 配置串口的参数。

串口的基本配置。这里使用的是波特率为9600、数据位8位、停止位1位、校验位无、不使用硬件流控制的配置。


串口的高级配置。这里我们使用默认选项。需要注意的是采样周期Oversampling,采样周期的选择有3、8、16等三个档,通常选择3和8即可,如果时钟偏差较大或者时钟速度太快导致波特率分频的系数计算异常,就选择16档。只要不要让sysconfig报错即可。这里我们的串口时钟频率是4MHz,所以我们选择16档。

串口中断的配置。本案例使用中断方式的串口接收,每当接收到一个字节将会进入到接收中断中。

设置串口的引脚。

代码

#include "ti_msp_dl_config.h"

volatile unsigned int delay_times = 0;
volatile unsigned char uart_data = 0;

void delay_ms(unsigned int ms);
void uart0_send_char(char ch);
void uart0_send_string(char* str);

int main(void)
{
    SYSCFG_DL_init();
    //清除串口中断标志
    NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);
    //使能串口中断
    NVIC_EnableIRQ(UART_0_INST_INT_IRQN);
    
    while (1) 
    {                        
        //LED引脚输出高电平
        DL_GPIO_setPins(LED1_PORT, LED1_PIN_14_PIN);
        delay_ms(500);
        //LED引脚输出低电平
        DL_GPIO_clearPins(LED1_PORT, LED1_PIN_14_PIN);
        delay_ms(500);
    }
}

//搭配滴答定时器实现的精确ms延时
void delay_ms(unsigned int ms) 
{
    delay_times = ms;
    while( delay_times != 0 );
}        
//串口发送单个字符
void uart0_send_char(char ch)
{
    //当串口0忙的时候等待,不忙的时候再发送传进来的字符
    while( DL_UART_isBusy(UART_0_INST) == true );
    //发送单个字符
    DL_UART_Main_transmitData(UART_0_INST, ch);
}
//串口发送字符串
void uart0_send_string(char* str)
{
    //当前字符串地址不在结尾 并且 字符串首地址不为空
    while(*str!=0&&str!=0)
    {
        //发送字符串首地址中的字符,并且在发送完成之后首地址自增
        uart0_send_char(*str++);
    }
}

//滴答定时器的中断服务函数
void SysTick_Handler(void)
{
    if( delay_times != 0 )
    {
        delay_times--;
    }
}

//串口的中断服务函数
void UART_0_INST_IRQHandler(void)
{
    //如果产生了串口中断
    switch( DL_UART_getPendingInterrupt(UART_0_INST) )
    {
        case DL_UART_IIDX_RX://如果是接收中断
            //接发送过来的数据保存在变量中
            uart_data = DL_UART_Main_receiveData(UART_0_INST);
            //将保存的数据再发送出去
            uart0_send_char(uart_data);
            break;
        
        default://其他的串口中断
            break;
    }
}

  1. 串口中断必须手动开启。通过函数 NVIC_EnableIRQ指定开启某一个中断。开启之前要先清除中断标志位,否则开启中断后将会自动进入中断。

  2. 串口发送数据。可以通过函数 DL_UART_Main_transmitData 将字符数据发出。但为了确保不会阻塞发送通道的数据,需要增加忙判断。例如,你在发送ABCD时,刚刚准备发A,A还没有发送出去,芯片就要发送B了,这样就导致了数据丢失。

  3. 串口接收数据。接收数据本案例是通过串口中断接收的方式,一有数据过来就马上中断接收,非特殊情况不会有阻塞。

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

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

相关文章

工程英语【计算机英语】

文章目录 第一专题 Vocabulary, Terms 和 Jargons 区别1.1 知识1.1.1 Vocabulary——词汇1.1.2 Terms——术语1.1.3 Jargons——行话1.1.4 Buzzword——流行语 1.2 阅读文章【5.2 Type of Connection】1.2.1 翻译1.2.2 回答问题 第二专题 Abbreviations2.1 知识2.1.1 Abbreviat…

C语言 指针——字符数组与字符指针:字符串的表示与存储

目录 字符串常量 字符串变量? 字符数组的定义和初始化 字符指针的定义和初始化 将字符指针指向一个字符串 用字符数组保存一个字符串 将字符指针指向一个字符数组 使用字符指针的基本原则 使用指针的基本原则 字符串常量 字符串变量?  C 语言…

海外媒体发稿渠道和方法有哪些?如何选择靠谱的国外媒体发稿服务商?

在选择海外媒体发稿服务商时,以下是一些关键点可以帮助您找到靠谱的服务商: 服务商的经验和口碑:查找该服务商在行业内的声誉和客户评价。拥有丰富经验和良好口碑的服务商通常更可靠。 媒体资源和覆盖范围:了解服务商所能提供的媒…

定个小目标之刷LeetCode热题(10)

这道题属于一道中等题&#xff0c;看来又得背题了&#xff0c;直接看题解吧&#xff0c;有两种解法 第一种动态规划法 状态&#xff1a;dp[i][j] 表示字符串s在[i,j]区间的子串是否是一个回文串 状态转移方程&#xff1a;当s[i] s[j] && (j - i < 2 || dp[i 1]…

【android】安卓入门学习

文档介绍&#xff1a;http://8.136.122.222/book/primary/kotlin/kotlin-intro.html 文档补充说明&#xff1a;https://blog.csdn.net/qq_42059717/category_12047508.html 一、搭建环境及工具安装 见文档 二、工具界面及项目文件介绍 ├── app //工程主模块名称 │ …

男士应该穿三角裤还是平角裤?三角内裤和平角内裤的区别!

在当今市场&#xff0c;男士内裤的材质种类琳琅满目&#xff0c;但令人遗憾的是&#xff0c;众多男士在选择内裤时却常常忽视舒适度与耐用性&#xff0c;导致穿着体验不佳&#xff0c;甚至出现破损起球的问题。作为一位专业的测评博主&#xff0c;我深感有必要为大家深度剖析男…

nsight systems gui报错

问题&#xff1a;使用命令&#xff1a;nsys-ui打开GUI&#xff0c;点击START以后报错&#xff0c;如图 解决&#xff1a; 命令使用&#xff1a;sudo nsys-ui

Javascript时间循环应用—nextTick()详解

简单易懂 关于nextTick()的理解-CSDN博客 【Vue面试专题】56道经典Vue面试题详解&#xff01;说说nextTick使用和原理&#xff1f;_哔哩哔哩_bilibili Vue.nextTick() 是 Vue.js 提供的一个全局 API&#xff0c;用于在 DOM 更新后执行延迟回调。它通常用于在数据更新后立即获取…

电视剧推荐

1、《春色寄情人》 2、《唐朝诡事录》 3、《南来北往》 4、《与凤行》 5、《利剑玫瑰》 6、《承欢记》

Apple ID已成历史,在ios18中正式更名为Apple Account

随着iOS18的首个开发者预览版成功推送&#xff0c;众多热衷于尝鲜的用户已纷纷升级并开启全新体验。在这个版本中&#xff0c;备受瞩目的Apple ID正式迎来了它的进化——更名为Apple Account&#xff0c;并且拥有了中文名称“Apple账户”或简称“苹果账户”。 不过目前官网还称…

数字员工将重塑工作与生产的未来格局?

数字员工&#xff0c;由AI、机器学习和自动化技术驱动&#xff0c;正逐渐取代或协助人类完成从基础到高端的任务&#xff0c;极大提升工作效率&#xff0c;并改变工作认知。它们不仅影响各行业&#xff0c;还重塑人与机器、社会、自然的关系。与二十世纪末的国企下岗变革相比&a…

Nginx与Gateway

Nginx与Gateway Nginx 基本介绍 Nginx 是一款轻量级的高性能 Web 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。它由俄罗斯的 Igor Sysoev 所开发&#xff0c;最初供俄罗斯大型的门户网站及搜索引擎 Rambler 使用。 Nginx 的特点在于其占用…

GiantPandaCV | 提升分类模型acc(二):图像分类技巧实战

本文来源公众号“GiantPandaCV”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;提升分类模型acc(二)&#xff1a;图像分类技巧实战 上一篇文章GiantPandaCV | 提升分类模型acc(一)&#xff1a;BatchSize&LARS-CSDN博客探讨了…

开发了一个宝藏云桌面系统,编程小白强烈安利

大家会不会也会有这样的困扰&#xff0c;一个开发小白&#xff0c;在满怀激情的想踏入代码世界时&#xff0c;往往会被一系列复杂的环境配置和软件安装过程绊住了脚步。想象一下&#xff0c;如果你满心期待地想要运行一个简单的“Hello, World!”程序&#xff0c;或是尝试一段刚…

【OpenCV】opencv-4.9.0源码编译

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 公众号&#xff1a;VTK忠粉 前言 本文分享OpenCV-4.9.0源码编译流程&#xff0c;包含CUDA模块&#xff0c;包含Python-opencv&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞…

注册讲堂 | 医疗器械监管的可追溯性与UDI

医疗器械监管的关键-可追溯性 在医疗领域&#xff0c;每一个环节的精准和透明都是至关重要的。医疗器械的可追溯性正是这一需求的核心&#xff0c;它确保了产品从生产到患者使用的整个路径可以被追踪和记录。这不仅关乎患者的安全&#xff0c;也是医疗质量保证的关键。 可追溯…

销售公司客户资源保护,防止飞单私单管理系统

在竞争激烈的销售行业中&#xff0c;飞单问题一直是企业头痛的难题。飞单不仅会导致客户资源流失&#xff0c;还可能损害企业的声誉和利益。传统的销售管理方式已经无法满足现代企业的需求&#xff0c;而销售防飞单管理系统正是解决这一问题的关键。 销售防飞单管理系统通过集…

undetected_chromedriver驱动浏览器结束报错OSError: [WinError 6] 句柄无效

undetected_chromedriver驱动浏览器结束报错OSError: [WinError 6] 句柄无效 问题背景 使用undetected_chromedriver包驱动浏览器结束后报错句柄无效 Exception ignored in: <function Chrome.del at 0x000001DD50F07A60> Traceback (most recent call last): File “D:…

MFC绘图

文章目录 消息组成消息的作用获取消息翻译消息常见消息WM_DESTROYWM_SYSCOMMAND 消息循环的阻塞发送消息字符串资源加速键资源GDI绘图对象-画笔位图绘制文本绘制字体模式对话框动态库特点线程创建线程 互斥事件信号量 消息组成 窗口句柄消息ID消息的两个参数消息产生的时间消息…

RPG Maker MZ中被你忽略的干货操作——独立开关和“开关”在事件页中的关系

文章目录 独立开关和“开关”在事件页中的关系图片参考结论确认信息双方同时满足是否执行事件页2如果有2个开关条件和一个“独立开关”条件是否是and关系&#xff1f;如果2个开关满足&#xff0c;但是“独立开关”不满足是否执行&#xff1f; 独立开关和“开关”在事件页中的关…