(学习日记)2023.4.10

news/2023/12/1 11:08:13

写在前面:
由于时间的不足与学习的碎片化,写博客变得有些奢侈。
但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。
既然如此
不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录,记录笔者认为最通俗、最有帮助的资料,并尽量总结几句话指明本质,以便于日后搜索起来更加容易。


标题的结构如下:“类型”:“知识点”——“简短的解释”
部分内容由于保密协议无法上传。


点击此处进入学习日记的总目录

2023.4.10

  • 一、51:串口通信
  • 二、51:串口发送出现低时延相同十六进制数字
  • 三、51:串口发送中文汉字

一、51:串口通信

  1. 设置串口初始化,根据板子的参数更改设置
    在这里插入图片描述
    由于直接设4800误差太大,2400误差为0.16,所以可以用2400翻倍得到4800

在这里插入图片描述

在这里插入图片描述

(PS:由于个人的板子问题,4800总是出现乱码,所以下文实际使用的为9600

此时,初始化的函数如下:

#define FOSC 12000000L     // 系统频率为12MHz
#define BAUD 9600          // 波特率为9600
void UartInit(void)		
{PCON |= 0x80;         // SMOD = 1,波特率加倍SCON = 0x50;          // 8位数据位,允许接收,模式1TMOD &= 0x0F;         // 定时器1模式设为8位自动重载TMOD |= 0x20;TH1 = TL1 = -(FOSC/12/16/BAUD); // 定时器1初始值 (等同用0xFF-(FOSC/12/16/BAUD))TR1 = 1;              // 启动定时器1ES = 1;               // 开启串口中断EA = 0;               // 全局中断关闭
}

其中,PCON打开B7:控制SMOD翻倍
在这里插入图片描述
在这里插入图片描述
SCON设为 0x50:控制数据位数,并允许接收
在这里插入图片描述
TMOD 高四位先置0,然后将定时器的M11:打开定时器1,并设置定时器1的模式
在这里插入图片描述
在这里插入图片描述

  1. 编写 串口发送数据函数
/*
发送数字
Byte:发送内容
*/
void UART_SendByte(unsigned char Byte)
{SBUF = Byte;                    // 将数据放入发送缓冲区while(!TI);                    // 等待发送完成TI = 0;                        // 清除发送完成标志位
}

在这里插入图片描述

SBUF
在这里插入图片描述
TI:发送控制器
TI1时,说明正在发送;当TI0时,说明发送完成;
TI需要软件置0,所以最后加上 TI=0;

  1. (拓展)编写 串口发送数据串函数
#include <string.h>/*
发送字符串
String[]:字符串内容
*/
void UART_SendString(unsigned char *str)
{unsigned char i = 0;for (i = 0; i < strlen(str); i++)UART_SendByte(str[i]);UART_SendByte('\n');
}

二、51:串口发送出现低时延相同十六进制数字

  1. PC端接收数据如图所示:
    在这里插入图片描述
    而程序如下所示,很明显系统出现了一些错误,只能重复的输出第一个字符。
UART_SendString("bobobobobo");
  1. 解决问题
    经过排查,终于发现了问题源自 全局中断
    在这里插入图片描述
在初始化程序中,将:
EA = 1;               // 全局中断开启
改为
EA = 0;               // 全局中断关闭
即可避免上述问题

三、51:串口发送中文汉字

只需要将汉字放到 UART_SendString()函数中即可,如:

UART_SendString("啵啵啵,中午吃什么呢"); 

在这里插入图片描述


http://www.ppmy.cn/news/39765.html

相关文章

麻了,代码改成多线程,服务直接挂了

前言 很多时候&#xff0c;我们为了提升接口的性能&#xff0c;会把之前单线程同步执行的代码&#xff0c;改成多线程异步执行。 比如&#xff1a;查询用户信息接口&#xff0c;需要返回用户基本信息、积分信息、成长值信息&#xff0c;而用户、积分和成长值&#xff0c;需要…

Coremail AI技术发展前生今世

2023年3月15日凌晨&#xff0c;OpenAI发布大型多模态模型GPT-4&#xff0c;正式宣告AI迈入新的“黄金时代”。作为邮件安全厂商&#xff0c;Coremail不禁思索&#xff0c;在当今科技高速发展的节点上&#xff0c;如何将此类大型多模态模型落地至具体的邮件安全防护&#xff1f;…

es查询三种方式,Elasticsearch查询速度为什么这么快

Elasticsearch查询速度为什么这么快&#xff1f; es查询三种方式

第1章 微服务架构简介

*什么是微服务架构:微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务之间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕…

二叉树(OJ)

单值二叉树&#xff08;力扣&#xff09; ---------------------------------------------------哆啦A梦的任意门------------------------------------------------------- 我们来看一下题目的具体要求&#xff1a; 既然我们都学了二叉树了&#xff0c;我们就应该学会如何去…

35--Django-项目实战-全栈开发-基于django+drf+vue+elementUI企业级项目开发流程-封装日志、全局异常、封装Response对象

数据库配置: 数据库配置,使用环境变量存储敏感信息 windows为例,添加环境变量: 在settings.py配置: password = os.environ.get(DB_PASSWORD, 111) # ‘111’表示默认值模块相关: 1 导入模块的路径,需要从环境变量下开始导入 2 执行脚本(s2)所在路径,自动加入到环境…

被吐槽 GitHub仓 库太大,直接 600M 瘦身到 6M,这下舒服了

大家好&#xff0c;我是小富&#xff5e; 前言 忙里偷闲学习了点技术写了点demo代码&#xff0c;打算提交到我那 2000Star 的Github仓库上&#xff0c;居然发现有5个Issues&#xff0c;最近的一条日期已经是2022/8/1了&#xff0c;以前我还真没留意过这些&#xff0c;我这人懒…

VS Code中搭建C语言开发环境

搭建C语言开发环境可以分为以下几个步骤&#xff1a; 安装VS code编辑器安装C/C扩展安装C语言编译器 下面将对每个步骤进行详细说明&#xff1a; 1. 安装VS code编辑器&#xff1a; 访问 https://code.visualstudio.com/&#xff0c;选择合适的安装包下载并安装VS code编辑器…

软件:AutoDWG DWG2PDF Converter 2023 Crack

AutoDWG DWG 到 PDF 转换器&#xff0c;比以往任何时候都更快&#xff01; 主要特征&#xff1a; 批处理模式下的多文件转换&#xff1b;转换特定布局或图层&#xff1b;保留 TTF&#xff0c;True Type 字体&#xff0c;以便在 PDF 中搜索&#xff1b;打印、剪贴板复制和修改的…

零拷贝简介

是什么 什么是零拷贝呢? 这个词想必听过不止一次了吧, 但一直没有认真的研究一下这到底是个什么玩意. 在很久之前, 一次IO 操作的流程大致是这样的: 假设, 这里的 IO 设备是磁盘, 那么磁盘的一次read操作流程如下: CPU向磁盘发起 IO 请求磁盘将数据放入磁盘控制器缓冲区(上…

暂停更新,ChatGPT还能不能玩了

今天凌晨&#xff0c;一位网名anton的用户发推称&#xff1a;对GPT的需求如此之高&#xff0c;以至于现在新用户都无法升级到高级版了&#xff01; 注意&#xff1a;官网只是说暂停升级&#xff0c;不是永久停售Plus&#xff01; 一时间话题的焦点就引发到了“算力供应紧张”…

【三重卷积神经网络:TDNet:PanSharpening】

A Triple-Double Convolutional Neural Network for Panchromatic Sharpening &#xff08;一种用于全色锐化的三重卷积神经网络&#xff09; 全色锐化是指将具有高空间分辨率的全色图像与具有低空间分辨率的多光谱图像进行融合&#xff0c;以获得高空间分辨率的多光谱图像。在…

构建数字时代下的必要防线 消除医疗行业数据安全建设“盲区”

4月7日&#xff0c;由厦门市卫生健康信息学会和厦门大学附属第一医院、厦门服云信息科技有限公司举办的医疗数据安全学术研讨会顺利开展。 作为国内云原生安全领导厂商&#xff0c;安全狗除了协助举办此次活动&#xff0c;还以数据安全治理专家的身份参与演讲分享。 厦门服云…

VSCode修改配置(设置settings.json)汇总

1.settings.json文件在哪&#xff08;打开settings.json方式&#xff09; &#xff08;1&#xff09;C:\Users\【你电脑名字username】\AppData\Roaming\Code\User &#xff08;2&#xff09;左下角设置按钮 &#xff08;3&#xff09;文件 -> 首选项 -> 设置 在这设置…

探索LeetCode【0005】最长回文子串(未搞懂,未练习)

目录0、题目1、第一个官方答案1.1 动态规划&#xff08;未懂&#xff09;1.2 中心扩展&#xff08;已懂&#xff09;1.3 Manacher&#xff08;未懂&#xff09;2、第二个参考答案2.1 暴力求法&#xff08;已懂&#xff09;2.2 反转法&#xff08;未懂&#xff09;2.3 动态规划&…

Springboot统一日志处理(Logback)

一、日志介绍 1、什么是日志 通过日志查看程序的运行过程&#xff0c;运行信息&#xff0c;异常信息等 源码&#xff1a;https://gitee.com/charlinchenlin/store-pos 2、日志的功能&#xff1a; 1.快速的定位和排查问题&#xff1b; 2.记录用户信息&#xff1b; 3.记录操作…

从功能到年薪30W+的测试开发工程师,分享我这10年的职业规划路线

求职&#xff1f;择业&#xff1f;跳槽&#xff1f;职业规划&#xff1f; 作为一名初出茅庐的软件测试员&#xff0c;职业发展的道路的确蜿蜒曲折&#xff0c;面对一次次的岗位竞争&#xff0c;挑战一道道的面试关卡&#xff0c;一边带着疑惑&#xff0c;一边又要做出选择&…

Elasticsearch:检索运行时字段及使用 lookup 运行时字段丰富数据

使用 _search API 上的 fields 参数检索运行时字段&#xff08;runtime fields&#xff09;的值。 运行时字段不会显示在 _source 中&#xff0c;但 fields API 适用于所有字段&#xff0c;即使是那些未作为原始 _source 的一部分发送的字段。 在一下的测试&#xff0c;我将使…

Mongo初遇回忆录

序 上周&#xff0c;我和M女士分手了&#xff0c;也许是上个月&#xff0c;我不知道。也许是她太墨守成规&#xff0c;也许是我太肆意妄为&#xff0c;她说我给不了她想要的平稳和安定。她没有留下太多东西&#xff0c;我也不愿留下更多回忆。 做决定的过程中&#xff0c;我比…

微服务网关Gateway使用自定义Filter简单案例

一、相关依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId> </dependency> server:port: 9527 spring:application:name: cloud-gatewaycloud:gateway:discovery:l…
最新文章