当前位置: 首页 > news >正文

物联网|uart串口相关寄存器|波特率设置及计算|发送处理代码|串口接收中断处理函数|物联网之蓝牙4.0 BLE基础-学习笔记(7)

文章目录

  • 13 uart串口基础开发
    • 基本电路图:
    • 实验相关寄存器
    • 波特率设置及计算
    • 计算过程:
    • 设置中断
    • 发送处理代码
    • 串口接收中断处理函数
    • main.c

13 uart串口基础开发

基本电路图:

在这里插入图片描述

实验相关寄存器

相关寄存器UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD 、CLKCONSTA详见’数据手册的第16章节的16.8。
在这里插入图片描述

CC2540配置串口的一般步骤:
1、配置IO,使用外部设备功能。此处配置 PO_2和 PO_3用作串口UART0
2、配置相应串口的控制和状态寄存器。
3、配置串口工作的波特率。
寄存器PxSEL,其中x为端口的标号0~2,用来设置端口的每个引脚为通用IO或者是外部设备IO信号,作为缺省的情况,每当复位之后,所有的数字输入输出引脚都设置为通用输入引脚。
在任何时候,要改变一个端口引脚的方向,就使用寄存器PxDR来设置每个端口引脚为输入或输出。因此口要设置PxDIR中的指定位为1、其对应的引脚口就被设置X输出了
当读取端口寄存器PO、P1和P2的值,不管引脚配置如何,输入引脚上的逻辑值都被返回。这在执行读-修改-写指令期间不适用。读-修改-写指令是: ANL,ORL,XRL,JBC,CPL,INC,DEC,DNZ,MOV,CLR和SETB。在一个端口寄存器上操作,以下是正确的:当目标是端口寄存器P0、P1或P2中一个独立的位,寄存器的值,而不是引脚上的值,被读取、修改并写回端口寄存器。
用作输入时,通用IO端口引脚可以设置为上拉、下拉或三态操作模式。作为缺省的情况。复位之后,所有的端口均设詈为带上拉的输入。要取消输入的上拉或下拉功能,就要将PxINP中的对应位设置为1。IO端口引脚P1.0和P1.1没有上拉/下拉功能。注意配置为外设IO信号的引脚没有上拉/下拉功能,即使外设功能是一个输入。
在电源模式PM1、PM2和 PM3下 IO引脚保留当进入PMI/PM2/PM3时设置的IO模式和输出值(如果可用的话)。
7.6.4 USART 0
The SFR register bit PERCFG.U0 selects whether to use alternative 1 or alternative 2 locations.
ln Table 7-1, the USART0 signals are shown as follows:
UART:
RX:RXDATA
TX: TXDATA
RT: RTS
CT: CTS
SPI:
MI: MISO
MO: MOSI
C: SCK
SS: SSN
P2DIR.PRIP0 selects the order of precedence when assigning several peripherals to Port 0.When set to00, USART 0 has precedence. Note that if UART mode is selected and hardware flow control is disabled,USART 1 or Timer 1 has precedence to use ports P0.4 and P0.5.
P2SEL.PRI3P1 and P2SEL.PRIOP1 select the order of precedence when assigning several peripheralsto Port 1.USART 0 has precedence when both are set to 0.Note that if UART mode is selected andhardware flow control is disabled, Timer 1 or Timer 3 has precedence to use ports P1.2 and P1.3.
PERCFG = 0x00; //外设控制寄存器USART 0的IO位置,启用USART 0,故赋值为0
如果只开启P0.2,P0.3,则:
P0SEL = 0x0c; //P0_2,P0_3用作串口(外设功能)则为第2,3位,即0000 1100 = 0x0c
在这里插入图片描述

如果要开启P0.2,P0.3,P0.4,P0.5,则:
P0SEL = 0x3c; //P0_2,P0_3,P0_4,P0_5用作串口(外设功能)则为第2,3,4,5位,即0011 1100 = 0x3c
在这里插入图片描述

设置uart0优先,需操作寄存器为:
P2DIR (OxFF)- Port 2 Direction and Port 0 peripheral priority control
设置:
P2DIR &= ~0XC0; //P0优先作为UART0
0XC0=1100 0000
~1100 0000 =0011 1111
只修改7:6,设置为0,用&操作。
USART Registers
The registers for the USART are described in this section.For each USART there are five registersconsisting of the following (x refers to the USART number, i.e., 0 or 1):
UxCSR,USART x control and status
UxUCR,USART x UART controlUxGCR,USART x generic control
UXDBUF,USART x receive/transmit data buffer.UXBAUD.USART x baud rate control
在这里插入图片描述
在这里插入图片描述

波特率设置及计算

Baud rate exponent value. BAUD_E along with BAUD_Mdetermines the UART baud rate andthe SPl master sCK clock frequency.
U0GCR |= 9; U0GCR的[4:0]位设置:BAUD_E[4:0] ,波特率指数。9=0000 1001 [4:0]位为0 1001
BAUD_E和baud_m一起决定了UART波特率和SPl主sCK时钟频率。
U0BAUD |= 59; //波特率设为19200,
在这里插入图片描述

计算过程:

公式为:在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
以32MHZ为例,查表结果:在这里插入图片描述

设置中断

U0CSR |= 0x40; //0x40=0100 0000 ,操作第6位,允许接收
U0CSR (0x86) – USART 0 Control and Status
UART receiver enable. Note do not enable receive before uart is fully configured.
0:Receiver disabled
1: Receiver enabled
在这里插入图片描述

中断设置IRCON2.UTX0IF
UTX0IF = 0; //UART0 TX中断标志初始置位0
在这里插入图片描述

IEN0 |= 0x84; //0x84 = 1000 0100 开总中断允许接收中断
7 EA 0 R/W Disables all interrupts.
0: No interrupt is acknowledged.(没有中断被确认)
1: Each interrupt source is individually enabled or disabled by setting its
corresponding enable bit.(1:通过设置每个中断源对应的使能位来单独使能或使能。)
2 URX0IE 0 R/W USART0 RX interrupt enable
0: Interrupt disabled
1: Interrupt enabled(中断使能)

发送处理代码

U0DBUF:USART receive and transmit data. When writing this register, the data written is written to the
internal transmit-data register. When reading this register, the data from the internal read-data
register is read.(USART接收和传输数据。当写入这个寄存器时,写入的数据被写入内部传输数据寄存器。在读取这个寄存器时,从内部读取数据
读取寄存器。)

/****************************************************************
串口发送字符串函数
****************************************************************/
void UartTX_Send_String(char *Data,int len) //buff数组通过指针访问
{int j;for(j=0;j<len;j++){U0DBUF = *Data++;  //USART接收和传输数据while(UTX0IF == 0);UTX0IF = 0;}
}

串口接收中断处理函数

模板:
#pragma vector = T3_VECTOR //格式:#pragma vector = 中断向量,紧接着是中断处理程序
__interrupt void T3_ISR(void)
{

}
实际:
#pragma vector = URX0_VECTOR //格式:#pragma vector = 中断向量,紧接着是中断处理程序
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //UART0 TX中断标志初始置位0
RxBuf = U0DBUF;
}

main.c

/****************************************************************
主函数
****************************************************************/
void main(void)
{uchar i;P1DIR = 0x03; 				//P1控制LEDRLED = 1;GLED = 0;				//关LEDinitUARTSEND();UartTX_Send_String(Txdata,25);	        //JIAJIE TECH.INC.for(i=0;i<30;i++)Txdata[i]=' ';strcpy(Txdata,"HELLO! JIAJIE Technology\n");       //将UART0 TX test赋给Txdata;while(1){UartTX_Send_String(Txdata,sizeof("HELLO! JIAJIE Technology\n")); //串口发送数据Delay(50000);                                                       //延时GLED=!GLED;                                           //标志发送状态Delay(50000);Delay(50000);}
}

教程中的处理函数:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
增加打开,关闭灯光的信息代码:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
作业:增加流水灯模式
在这里插入图片描述

相关文章:

物联网|uart串口相关寄存器|波特率设置及计算|发送处理代码|串口接收中断处理函数|物联网之蓝牙4.0 BLE基础-学习笔记(7)

文章目录 13 uart串口基础开发基本电路图&#xff1a;实验相关寄存器波特率设置及计算计算过程&#xff1a;设置中断发送处理代码串口接收中断处理函数main.c 13 uart串口基础开发 基本电路图&#xff1a; 实验相关寄存器 相关寄存器UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLK…...

有数·智享未来 | 新华三重磅发布绿洲平台3.0

5月10日&#xff0c;紫光股份旗下新华三集团以“有数智享未来”为主题&#xff0c;成功举办绿洲平台3.0新品发布会。全新一代绿洲平台实现内核进阶&#xff0c;以五大技术能力升级、五大行业方案沉淀、六类服务能力保障&#xff0c;三位一体构筑更领先的用数底座、更落地的用数…...

在Apex中获取Site URL

Foreword 目前SF暂未提供直接有效的方法在Apex获取SiteURL&#xff0c;我们可以在Idea (Access URL for a Site or Community from Apex)页面投票&#xff0c;除了下面提供的一种hack思路&#xff0c;当然也可以通过Custom Label手动维护。 Format of Site URL Sandbox site …...

【电子学会】2023年03月图形化三级 -- 比大小.md

文章目录 比大小1. 准备工作2. 功能实现3. 设计思路与实现&#xff08;1&#xff09;角色分析&#xff08;2&#xff09;背景分析&#xff08;3&#xff09;所用积木块介绍a. 运动类b. 外观类c. 事件类d. 控制类e. 运算类f. 变量类 &#xff08;4&#xff09;角色、舞台背景设置…...

Kali-linux使用Nessus

Nessus号称是世界上最流行的漏洞扫描程序&#xff0c;全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务&#xff0c;并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件&#xff0c;Nessus可同时在本机或远端上遥控&#xff0c;进行系统的漏洞分析扫描…...

青训营 x 训练营结营测试题目(前端方向)

文章目录 &#x1f4cb;前言&#x1f3af;选择题&#xff08;含多选&#xff09;&#x1f4dd;最后 &#x1f4cb;前言 这篇文章的内容是23年6月青训营 x 训练营结营题目&#xff0c;题目一共有25题&#xff0c;题目类型为选择题&#xff0c;包括了单选题和多选题&#xff0c;…...

虚拟化技术介绍-VMware和Docker的区别

都说今天是一个云时代&#xff0c;其实云的本质就是由基础架构提供商提供基础架构&#xff0c;应用开发商不再关心基础架构。我们可以类比人类刚刚发明电的时候&#xff0c;工厂需要自己建电站&#xff0c;而现在只需要电线和插座就可以使用电。云时代让我们可以在分钟、甚至秒…...

TinyHttpd 运行过程出现的问题

最近拉了个 TinyHttpd 的工程下来&#xff0c;不过好像各个都有些改动&#xff0c;最后挑了篇阅读量最多的。工程也是从这里面给的链接下载的。 参考自&#xff1a;https://blog.csdn.net/jcjc918/article/details/42129311 拿下来在编译运行前&#xff0c;按这里说的&#x…...

【Linux】shell编程—数组

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、shell数组1,数组的概念2.数组的定义 二、Shell数组操作1. 获取数组的所有元素的列表2. 获取数组的所有元素下标3.取数组的元素个数4. 获取数组的某个元素的值5.…...

Maven仓库与Maven插件

目录 Maven 仓库 本地仓库 中央仓库 远程仓库 Maven 依赖搜索顺序 Maven 阿里云(Aliyun)仓库 gradle 配置指南 Maven 插件 插件类型 实例 Maven 仓库 在 Maven 的术语中&#xff0c;仓库是一个位置&#xff08;place&#xff09;。 Maven 仓库是项目中依赖的第三方库…...

【溯源反制】CDN域前置云函数-流量分析|溯源

文章目录 CDN隐藏C2地址环境搭建上传至威胁感知平台直接分析使用DNSQuerySniffer和Process Monitor定位进程网络流量分析文件属性(IDAPro Ollydbg) 域前置隐藏环境搭建威胁感知流量分析 云服务API网关/云函数云函数使用HTTPcs的流量可以简单的分为三个阶段 云函数使用HTTPS 总结…...

【Vue】学习笔记-全局事件总线

全局事件总线(GlobalEventBus) 一种可以在任意组件通信的方式&#xff0c;本质上就是一个对象&#xff0c;它必须满足以下条件 所有的组件对象都必须能看见他这个对象必须能够使用$ on $ emit $ off方法取绑定、触发和解绑事件 使用步骤 定义全局事件总线 //创建VUE new V…...

MATLAB数值运算(六)

目录 实验目的 实验内容 原创代码&#xff0c;仅供参考&#xff0c;不要直接CV呀 ~_~ 实验目的 1&#xff09;掌握定义符号对象和创建符号表达式的方法&#xff1b; 2&#xff09;掌握符号运算基本命令和规则&#xff1b; 3&#xff09;掌握符号表达式的运算法则以及符号矩阵…...

某医院Pad网络故障分析

分析背景 某医院为了加强信息安全管理&#xff0c;防止病人隐私信息泄露&#xff0c;采用部署“零信任”安全架构设计理念的企业移动安全支撑平台方案。 但在部署前期测试时&#xff0c;遇到了严重的性能问题。 在本次测试环境中&#xff0c;通过PAD访问患者转运业务&#x…...

git 撤销中间某次提交,保留其他提交的方法

今天上班脑抽了&#xff0c;吧test直接合到了uat,因为项目近期就我一个人开发&#xff0c;自己拉个三个分支再改不同的东西&#xff0c;最后都是发到test分支发测试&#xff0c;发生产的时候一个个和嫌麻烦&#xff0c;直接吧test分支怼到了uat&#xff0c;结果生产就出问题了&…...

空中下载技术(OTA)电控信息安全

随着汽车电子控制系统功能复杂度和数据颗粒度呈阶梯式增加&#xff0c;其发展速度逐渐超越网络安全防护方法、技术和标准的发展&#xff0c;现阶段汽车电子正面临巨大的网络信息安全风险&#xff0c;对功能安全的潜在影响也仍在探索和解决中&#xff0c;信息安全问题已经成为影…...

数据库sql语句(count(*)和count(字段))

例题&#xff1a; 创建如下两张表 分别命名为books和persons &#xff08;1&#xff09;按照书名&#xff0c;姓名的顺序列出字里包含‘德’字的人物的姓名&#xff0c;书名和字。 select name 姓名,bookname 书名,style 字 from books,persons where style like %德% and bo…...

短视频矩阵源码系统

短视频矩阵源码系统开发要则&#xff1a; 1. 需求分析&#xff1a;对短视频平台的需求进行全面分析&#xff0c;确立系统开发目标和方向。 2. 技术选型&#xff1a;选用最适合的技术开发短视频矩阵系统&#xff0c;如前端框架、数据库、服务器等。 3. 系统设计&#xff1a;按…...

检测数据类型

//typeof() 对于基本数据类型没问题&#xff0c;遇到引用数据类型不管用 console.log(typeof 666) //number console.log(typeof [1,2,3]) //object //instanceof() 只能判断引用数据类型&#xff0c;不能判断基本数据类型 console.log( [] instanceof Array) //true …...

【2023春招】4399 web后台-Java后端开发

目录 一、JVM1.类加载过程2.static和final变量的初始化时机 二、依赖1.Spring Boot 自动装配2.使用依赖过程中遇到问题如何排查3.引入的某个依赖不符合预期&#xff0c;如何处理 三、数据库&#xff1a;1.InnoDB 和 MyISAM 索引的区别2.字符串类型字段&#xff0c;WHERE 数字&a…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

算术操作符与类型转换:从基础到精通

目录 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符&#xff1a;、-、*、/、% 赋值操作符&#xff1a;和复合赋值 单⽬操作符&#xff1a;、--、、- 前言&#xff1a;从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...

6.9本日总结

一、英语 复习默写list11list18&#xff0c;订正07年第3篇阅读 二、数学 学习线代第一讲&#xff0c;写15讲课后题 三、408 学习计组第二章&#xff0c;写计组习题 四、总结 明天结束线代第一章和计组第二章 五、明日计划 英语&#xff1a;复习l默写sit12list17&#…...

Axure Rp 11 安装、汉化、授权

Axure Rp 11 安装、汉化、授权 1、前言2、汉化2.1、汉化文件下载2.2、windows汉化流程2.3、 macOs汉化流程 3、授权 1、前言 Axure Rp 11官方下载链接&#xff1a;https://www.axure.com/downloadthanks 2、汉化 2.1、汉化文件下载 链接: https://pan.baidu.com/s/18Clf…...

使用 uv 工具快速部署并管理 vLLM 推理环境

uv&#xff1a;现代 Python 项目管理的高效助手 uv&#xff1a;Rust 驱动的 Python 包管理新时代 在部署大语言模型&#xff08;LLM&#xff09;推理服务时&#xff0c;vLLM 是一个备受关注的方案&#xff0c;具备高吞吐、低延迟和对 OpenAI API 的良好兼容性。为了提高部署效…...