STM32读取芯片唯一码UID
STM32读取芯片唯一码UID1 使用方法STM32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭。按照用户不同的用法,可以以字节(8位)为单位读取,也可以以半字(16位)或者全字(32位)读取。在这里要提醒读者,要注意大端小端模式。
通过 datasheet(STM32用户指南)来了解,打开书签,找到跟 ID有关的,终于找到了“Unique deviceID register (96 bits)”,那就是它了,错不了。
通过阅读datasheet,初步了解到,想获取 Device ID,只需要从这个地址“0x1FFF F7E8”开始12字节96bit,读取即可。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849// 通过地址手动获得芯片ID/*定义STM32 MCU的类型*/typedef enum { STM32F0_, STM32F1_, STM32F2_, STM32F3_, STM32F4_, ...
QWaitCondition的正确使用方法
QWaitCondition的正确使用方法1 简单用法QWaitCondition 用于多线程的同步,一个线程调用QWaitCondition::wait() 阻塞等待,直到另一个线程调用QWaitCondition::wake() 唤醒才继续往下执行。
为了描述方便,这里假设主线程(非Qt的UI线程)调用Send()往通信口发送一个数据包,然后阻塞等待回包才继续往下执行。另一个线程(通信线程)不断从通信口中接收数据并解析成数据包,然后唤醒主线程。下面是按网上给的最简单的方法:
12345678910111213141516// 示例一// 主线程Send(&packet);mutex.lock();condition.wait(&mutex); if (m_receivedPacket){ HandlePacket(m_receivedPacket); // 另一线程传来回包}mutex.unlock();// 通信线程m_receivedPacket = ParsePacket(buffer); // 将接收的数据解析成包condi ...
STM32CubeMX中EXTI(外部中断)接口使用
a107d77b8497e206f9aa7b629c7c6346a6cb816f49da5989d65601340c0cd0083f383078681e85a2250dee414a8eaf98472adea4903710f9a5cc09518f2aff11cbb3864a4528b482a888b993d153364841f8f923b7ab0e9c118704b58ada0d97fd5e8e844f87e4f07aa079c962bb69b1be5de4221502c8cb1b0f3acad97c266ad3623948e7b3ad64494f59c96b07d556e9c4369cc1200351e99f22af90600ab8f20130d3fb745cee4bdb2becef15f2cdc06ae26e79584ea0cbf977b851404df05a305f7f0136a3a73ffdb6ee555bf0d9ae401855c0e8cf2a2d283cb0647d96c7232cf777394b25dbe0bcf188a840fdf459b5f9dafb83c354e ...
STM32CubeMX定时器的配置使用
STM32CubeMX定时器的配置使用1 STM32CubeMXSTM32CubeMX是ST官方出的一款针对ST的MCU/MPU跨平台的图形化工具,支持在Linux、MacOS、Window系统下开发,其对接的底层接口是HAL库,另外习惯于寄存器开发的同学们,也可以使用LL库。STM32CubeMX除了集成MCU/MPU的硬件抽象层,另外还集成了像RTOS,文件系统,USB,网络,显示,嵌入式AI等中间件,这样开发者就能够很轻松的完成MCU/MPU的底层驱动的配置,留出更多精力开发上层功能逻辑,能够更进一步提高了嵌入式开发效率。
2 定时器简介2.1 定时器初探 定时器,顾名思义,就是定时的功能,定时器在单片机中算是除GPIO外最基本的外设。在ST中,定时器分为几种,基础定时器,通用定时器,高级定时器和低功耗定时器。本文重点在于基础定时器的配置,其他类型的定时器在其他篇章中详细说明。 基础定时器,就是只提供最基础的定时功能,下面我们就从ST这个基础定时器框图来讲解一下定时器原理。
以定时1s为例,如果当前输入的时钟频 ...
如何设置电脑的DNS服务器以及常用的DNS服务器
如何设置电脑的DNS服务器以及常用的DNS服务器1 DNS:网络世界的指南针域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
计算机并不能直接通过域名来找到对应的服务器,它们都需要 IP 地址才能找到究竟是哪个服务器,IP 地址都是独一无二的。
打个比方,我想给一个叫做「李毛毛」的朋友打电话,我没法直接通过「李毛毛」这个名字来打电话。我必须知道李毛毛的电话号码才能打电话。但是他的电话号码太长了,而且我的朋友特别多,我记不住,于是我必须需要电话簿来帮助我,这意味着我只能通过这个电话簿来知道我的朋友们的电话号码。在这个例子里,「李毛毛」这个名字就是服务器的「域名」,「电话号码」就是「IP 地址」,而「电话簿」就是我们今天的主题:「DNS 服务器」。
我们可以在上图看到,DNS 服务器将网址转换成了机器易于理解的 IP 地址,就像一个电话簿一样:客户端首先 ...
Keil5调试时peripherals不显示的解决方法
1 Keil5调试时peripherals不显示的解决方法1.1 问题描述keil新建工程进行仿真时,如图1和图2所示,进入Debug环境发现System Viewer菜单显示空白,Peripherals菜单没有外设寄存器。如图3所示,打开Options for Target查看System Viewer File选项没有勾选Use Custom File,系统默认的STM32F103xx.svd。如图4所示,查看Debug选项中的Dialog DLL一栏写着DCM.DLL,Parameter一栏写着-pCM3。
图1 System Viewer菜单显示空白
图2 Peripherals菜单没有外设寄存器
...
【STM32 HAL库实战】串口DMA+空闲中断实现不定长数据接收
【STM32 HAL库实战】串口DMA+空闲中断实现不定长数据接收1 STM32CubeMX配置部分1.1 初始化配置打开STM32CubeMX,点击ACCESS TO MCU SELECTOR,在Commercial Part Number中输入MCU型号,例如我在这里输入了STM32L431RCT6。选中正确型号然后双击进入下一步点击配置界面。
1.2 SYS配置如图注意开启Debug的IO口。
1.3 RCC配置如图开启了外部晶振,若没有则都选择Diable。
1.4 USART1配置NVIC设置:注意这里需要打开USART1 global interrupt全局中断。
DMA设置:打开串口接收DMA,模式选择Normal。(TX的DMA也要添加进来,此处图中没有标出)
2 软件执行流程
需要关注下面几个函数:
// 在阻塞模式下接收一定数量的数据,直到接收到预期数量的数据或发生空闲事件
HAL_UARTEx_ReceiveToIdle(UART_HandleTypeDef* huart, ...
ULN2003芯片工作原理
ULN2003芯片工作原理1 ULN2003A是什么芯片ULN2003A 是高压、大电流达林顿阵列芯片,包含七个具有公共发射极的开路集电极达林顿对,一般采用DIP-16或SOP-16塑料封装。包含用于感应负载驱动的抑制**二极管**,输入固定在输出的对面,以简化电路板布局。
ULN2003A 是一款 16 引脚 IC,由 7 个达林顿对(每对受抑制二极管保护)组成,因此能够处理最多 7 个负载(可能是电感性的)。
简单来说,在单个 ULN2003 芯片中有 7 个驱动器。因此最多可以控制7 个负载。每个达林顿对可以处理最大 500mA 的负载,而峰值为 600mA。同样,每个达林顿对的最大输出电压为 50V。
2 ULN2003A引脚排列2.1 引脚排列图如下
2.2 引脚描述如下
引脚9:该脚是内部7个续流二极管负极的公共端,各二极管的正极分别接各达林顿管的集电极。用于感性负载时,该引脚必须接负载电源正极,实现续流作用。如果该脚接地,实际上就是达林顿管的集电极对地接通。
感性负载:
线圈负载称为感性负载,电容负载称为容性负载,纯电阻负载称 ...
Docker部署emqx,并挂载配置文件,存储,日志目录
Docker部署emqx,并挂载配置文件,存储,日志目录1 部署emqx1.1 使用docker拉取最新emqx镜像1docker pull emqx
1.2 创建持久化挂载目录12345mkdir -p /home/emqx/{etc,data,log}# /home/emqx/etc 挂载emqx的配置文件目录# /home/emqx/data 挂载emqx的存储目录# /home/emqx/log 挂载emqx的日志目录
1.3 启动临时镜像1docker run -d --name emqx -p 1883:1883 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx
1.4 复制emqx配置文件1docker cp emqx:/opt/emqx/etc /home/emqx/
1.5 赋予权限1chmod -R 777 /home/emqx/{data,etc,log}
...
docker拉取镜像异常Error_response_from_daemon_Get_httpsregistry-1_docker_iov2
9d6e01eaa5b18aa42000e9e423a5b3506de0585497cea206a359422f651b75bfd3e5bd2a3cc64b97e9f0be38ae1e2b08beb60f2d11088e755a787d9d775e2d98573dd148eb13602045a650866dc478e0a80181392be57315455deff4618cdd1f56c7510dc661cb9d63cdd903f5606eb8308fa3c49b308aff220980575d60cd700225176112ca03b34ad5b2f09ec1d1c7f6ffd3bc965633bfd3cb9b87c8098dc040b8c8363429122d6dc27e0aba84b462f52957500a73e1c59f3320635c1e3148923415a63055d68047598c47725dd28fb0f92cf63ba31e68a1e71a94e71b161545cb96a74a52db152f4645ddd2383756e5eba9726409cbfdc ...