STM32使用DWT实现微秒延时
STM32使用DWT实现微秒延时前言 在使用Cortex-M内核单片机开发驱动时总是需要延时函数做超时判断,这时想实现微秒级延时,不想让CPU干等时间,又不想浪费硬件定时器资源,这时候可以使用DWT(Data Watchpoint and Trace )数据观察点与跟踪组件来实现延时功能。
DWT数据观察点与跟踪组件介绍 DWT挂载在AHB私有外设总线上,是一个处理数据观察点功能的模块。通过 DWT,可以设置数据观察点。当一个数据地址或数据的值匹配了观察点时,就说产生了一次匹配命中事件。匹配命中事件可以用于产生一个观察点事件,后者能激活调试器以产生数据跟踪信息,或者让 ETM 联动以跟踪在哪条指令上发生了匹配命中事件。作为调试功能这里就不过多展开了,可以去查看Cortex-M3 权威指南中内容,下面讲解以下DWT有关的寄存器。
相关的DWT寄存器 要实现延时的功能,总共涉及到三个寄存器:DEMCR、DWT_CTRL、DWT_CYCCNT,分别用于开启DWT功能、开启CYCCNT及获得系统时钟计数值。
DEM_CR寄存器 ...
计算机网络体系结构(五)
运输层 (network layer)
计算机网络体系结构(四)
网络层 (network layer) 由于早期电信网的成功经验,有些人认为应该让网络层像电信网一样,两台主机通信前先建立连接(虚电路 Virtual Circuit),然后沿着已建立的连接发送分组,网络负责可靠交付。但因特网却提出一种新的设计思路,因为电信网的终端(话机)非常简单,没有差错处理能力,因此电信网必须提供可靠交付。但因特网的终端是具有差错处理能力的计算机,所以在网络层只向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务。网络在发送分组时不需要先建立连接,每一个分组(IP数据报)独立发送,也不进行编号,网络层不提供服务质量的承诺,所传分组可能出错、丢失、重复、失序或者交付时限。由于传输网络不提供端到端二点可靠服务就使网络中的路由器可以做的比较简单,而且价格低廉,如果主机种的进程间通信需要可靠服务,就由运输层负责(包括差错控制、流量控制等)。使网络造价大大降低,运行方式灵活,可以适应多种应用。
虚拟互联网络 如果要把全世界范围内的网络都互连起来,并且能够互相通信,没有一种单一的网络能适应所有用户的需求,另外随着技术不断发展也会 ...
计算机网络体系结构(三)
数据链路层(data link layer)数据链路层使用的信道主要有以下两种类型:
点对点信道的数据链路层 这种信道使用一对一的通信方式,最常用的协议就是点对点协议 PPP(Point to Point Protocol)。在通信线路质量较差的年代,在数据链路层使用必须使用可靠的传输协议,比如思科私有协议高级数据链路控制 HDLC(High-level Data Link Control)在当时就比较流行。而随着通信线路质量的提升,对于点对点通信的链路简单的PPP协议就是更好的选择了。现在互联网的数据链路层使用的最多的就是PPP协议和CSMA/CD协议(也就是使用拨号入网或者使用以太网入网)。
PPP 协议应满足的需求
简单 国际互联网工程任务组(The Internet Engineering Task Force,简称 IETF)在设计互联网体系结构时把其中最复杂的部分放在TCP协议中,而网际协议IP则相对简单提供不可靠的数据报服务,这种情况下数据链路层没有必要提供比IP协议更多的功能,因此简单首要的要求。总之接收方每收到一个帧就进行CRC校验,如果正确就 ...
计算机网络体系结构(二)
关于物理层的传输媒体 传输媒体作为计算机网络体系结构的第0层,它是数据传输系统中在发送器和接收器之间的物理通路,也称为传输介质或者传输媒介。传输媒体可以分为两大类,即导向传输媒体和非导向传输媒体。在导向传输媒体中电磁波被导向沿着固体媒体(铜线或光纤)传播,而非导向传输媒体就是指自由空间,在非导向传输媒体中电磁波的传输常称为无线传播。网络传输媒介的质量的好坏会影响数据传输的质量,包括速率、数据丢包等。
常见的导向传输媒体有以下几种1. 双绞线 双绞线也成为双扭线,它的结构简单就是把两根互相绝缘的铜导线并排放在一起,然后用规则的方法绞合(twist)起来就构成了双绞线。绞合可减少对相邻导线的电磁干扰。现在以太网基本上也都是使用各种类型的双绞线电缆进行连接的。如无屏蔽双绞线UTP(Unshielded Twisted Pair)、屏蔽双绞线STP(Shielded Twisted Pair),如果对整条双绞线电缆进行屏蔽则标记为x/UTP(x为F(Foiled)表明采用铝箔屏蔽层,x为S(braid Screen)表明采用铜编制层,x为SF,则表明 ...
计算机网络体系结构(一)
概述 两个计算机要想相互通信必须高度协调工作,这种“协调”比较复杂,因此需要分层,也就是分而治之的方法,将庞大而复杂的问题转化为若干个较小的易于研究和解决的局部问题。
最早因为市场上不同公司都使用自己的标准,使用同一个公司生产的设备可以容易的互联成网,但如果购买了其他公司的产品就很难互相连通,为了解决这个问题国际标准化组织ISO于1977年成立了专本的机构研究该问题,不久后便提出了一个试图使各种计算机在世界范围内互联成网的标准框架,即开放系统互连基本参考模型 OSI/RM (Open Systems Interconnection Reference Model),简称OSI模型,此模型是个抽象的概念(排除和互联无关的部分,仅考虑和互联有关的部分),在1983年形成了正式文件即ISO 7498国际标准,也就是所谓的七层协议的体系结构。
到了20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来了,但由于基于TCP/IP的互联网已抢先在全世界覆盖了相当大的范围,同时却几乎找不到什么厂家生产出符合OSI标准的商用产 ...
WSL2内使用Windows的v2ray代理
WSL2内使用Windows的v2ray代理
在WSL2中使用install或git命令是总是因为网速问题失败,我们在部署配置环境时就最好需要使用代理,但WSL2 因为是通过虚拟机的方式实现,网络不再像 WSL1 一样与 Windows 共享,变成了一个新的网段,所以想使用宿主机的代理就比较麻烦,这里参考网上资料这里给出设置方法。
一、Windows内设置v2ray客户端开启允许来自局域网的连接
二、WSL2内设置1. 修改DNS服务器地址修改由于使用代理不能再通过宿主机IP获取nameserver,这里在/etc/resolv.conf直接设置nameserver为GoogleDNS地址8.8.8.8或者其他可用的dns服务器地址。
12345# This file was automatically generated by WSL. To stop automatic generation of this file, add the following entry to /etc/wsl.conf:# [network]# generateResolvConf = falsen ...
电视盒子做小型服务器(华为海思Hi3798Mv100)
电视盒子做小型服务器(华为海思Hi3798Mv100)前言翻找东西时发现了闲置的一个电信电视盒子,在网上查找了下相关资料挺多的,而且其SDK已经公开,盒子主控是华为海思Hi3798Mv100,四核ARM Cortex A7,主频高达1.5GHz,我这个是1G内存8G的存储的版本,有SD卡槽和两个USB接口,可以外接存储设备扩展,还有蓝牙WIFI功能,功耗仅有3w左右,刷上Ubuntu系统后可玩性非常高,下面就改造下使其变成一个小型的服务器。
拆机硬件拧下前面脚垫下方的两个螺丝后就可以用撬板撬下外壳,上下外壳有卡扣连接,没有撬板的话用螺丝刀慢慢撬也可以,只不过会留下些痕迹。
之前拆开忘记拍了这里补一个拆机网图,可以清楚的看到板子上的外设,两片南亚的512MB的闪存,背面一片8GB的闪迪eMMC芯片,瑞昱的RTL8188FTV低功耗无线芯片 ,双USB2.0接口。
在这个SD卡槽边上有一个预留的调试串口,我们可以自己焊上个座子然后用杜邦线连接好USB转串口的模块来烧录固件。
可以看到cpu是通过散热片被动散热的,后面用起来时温度总是太高,所以这里又拆开加了一个5V的小风扇辅助散热。
...
配置美化bash和vim
配置美化bash和vimbash、vim允许你自定义你的终端,自定义的bash、vim可以实现美化效果,还可以提高你在终端的工作效率,下面我备份的配置文件。
bash.bashrc
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149# ~/.bashrc: executed by bash(1) for non-login shells.# see /usr/share ...
实时操作系统FreeRTOS
FreeRTOS内核实现FreeRTOS中链表的实现