avatar
文章
112
标签
107
分类
34
Home
Archives
Categories
Tags
About
LsWorld
Home
Archives
Categories
Tags
About

LsWorld

基于STM32综合学习项目结构设计
发表于2025-01-15|嵌入式
该项目基于型号STM32F103C8T6,项目的具体内容参考GitHub仓库,根据各个模块来学习对应的功能的实现。 开发GPIO驱动在开发GPIO模块前,需要对GPIO_TypeDef中的参数有一定的认识。 typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef; 1. CRL (Configuration Register Low) 作用:配置 GPIO 端口的低 8 个引脚(Pin 0 ~ Pin 7)的模式和速度。 位域: 每 4 位控制一个引脚: MODEy[1:0]:配置引脚的模式(输入、输出、复用功能、模拟模式)。 CNFy[1:0]:配置引脚的输出类型(推挽、开漏、复用功能、模拟模式)。 示例: 设置 Pin 0 为推挽输...
stm32中热敏电阻模块在OLED上实时显示温度
发表于2025-01-15|嵌入式
采用stm32f103c8t6芯片的A0引脚连接热敏电阻模块。采用ADC1的通道0,使用标准库实现。 实现功能所使用的常量为: //温度传感器参数 #define VREF 3.3f // ADC参考电压 3.3V #define R1 10000.0f // 电压分压阻值为10KΩ,与热敏电阻串联,用于计算热敏电阻的阻值 #define B 3950.0f // 热敏电阻的 B 常数,单位为开尔文(K),用于计算热敏电阻的温度 #define T0 298.15f // 参考温度,单位为开尔文(K),298.15K即 25°C #define R0 10000.0f // 热敏电阻在参考温度 T0 下的阻值,用于计算热敏电阻在当前温度下的阻值 // DMA内存存入位置 #define ADC_BUFFER_SIZE 10 uint16_t ADC_ConvertedValue[ADC_BUFFER_SIZE]; GPIO引脚配置: void GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitS...
STM32F1系列驱动SG90舵机模块
发表于2025-01-09|嵌入式
SG90舵机模块介绍 标准库代码实现驱动舵机由上图可知可以通过PWM来实现驱动舵机,这里采用STM32F103C8T6的TIM2的通道4来实现,即该芯片的A3口引脚,如下图所示 配置20ms的时基单元(以PLL时钟频率为72MHz为例),那么就是将TIM2的定时器的周期配置为20ms(50Hz),即设置ARR= 2000 - 1,PSC = 720 -1,则定时器的时钟周期就为20ms,并且我在初始位置设置为90°,即起始值设置为150,代码如下: void TIM2_PWM_Config(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; // 配置定时器周期为20ms(50Hz) TIM_TimeBaseStructure.TIM_Period = 2000 - 1; // 72MHz / 7200 = 10KHz TIM_TimeBaseStructure.TIM_Prescal...
Python3中常用函数
发表于2025-01-07|python
本文参考Python菜鸟教程 Python基础语法#单行注释以`#`,多行注释以`"""`开头和`"""`结尾。 #注释1 """ 多行注释 """ #缩进与if,无需分号 if True: print('true') #多行语句,变量通过‘\’来实现多行语句 a = 1 b = 2 c = 3 total = a + \ b + \ c + \ print(total) #输出6 #字符串 str = '012345' print(str) #输出012345 print(str[0:-1]) #输出01234 取0到4左闭右开 -1表示最右边 print(str[0:-2]) #输出0123 print(str[1]) #输出 1 print(str[2:]) #输出 2345 print(str[0:4:2]) #输出 02 范围[0,4),即0 1 2 3 步长为2 print(str * 2) #输出012345012345 print(str + '你好') #输出012345你好 字符串拼接 dat...
hexo博客绑定域名实现国内访问
发表于2025-01-07|环境搭建
在本地可以用hexo来搭建自己的博客后(若还没有搭建可以看我的博客搭建这篇文章),再在Vercel实现线上访问(若想以其他静态页面而非Hexo来Vercel结合github实现线上访问可以看我的使用Vercel来部署静态页面并解决跨域问题这篇文章)。 经过以上两个步骤可以实现使用科技手段来访问搭建的网页或博客,但此时若不想使用科技手段对Vercel提供的域名在国内访问搭建的博客大概率是会访问失败。(这里的原理结合我所学的知识应该是因为Vercel所生成的默认的域名在国内dns服务器解析失败导致无法找到ip,从而使我们所搭建的网站在国内无法访问) 这个问题可以通过购买国内域名就可以实现,购买一些便宜的域名即可(域名购买的步骤不再演示了,便宜的域名6块1年也不是很贵,这里以阿里云的域名为例)。 域名购买完成后可在搜索栏中搜索域名,进入域名控制台页面。 然后点击全部域名查看自己购买到的域名。 下方应该就会有你所购买到的域名信息(若状态不是处于正常状态需要等待一段时间检查)。 然后打开Vercel,点击右上角的ADD NEW下面的Project。 在下方选择你的博客或其他...
串口协议
发表于2025-01-03|嵌入式
USART串口通信stm32中使用USART串口通信主要通过RX和TX两个接口完成基础操作,发送的数据通过总线到发送数据寄存器TDR,然后TDR中数据会发送到发送移位寄存器,发送移位寄存器会将比特右移的传到USARTX_TX引脚,产生串口协议规定的波形,当数据从发送移位寄存器发送完成时,TXE标志位会置1,只需判断TXE就可以知道是否可以传下一个数据。 同样在接受控制器中通过USARTX_TX引脚接受数据,接受完成会将RXNE标志位置1。 在实际使用中只有DR寄存器可供读写,写入DR时,数据走TX发送,读出DR时,数据走TX接受。 发送数据的函数形式为 void Serial_SendChar(uint8_t ch) { // 发送字符 USART_SendData(USART1, ch); // 等待发送缓冲区为空 发送完成会将USART_FLAG_TXE置1 while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); } 接受数据的形式为 if (US...
ADC模数转换器
发表于2025-01-02|嵌入式
ADC可以将模拟电压转换为数字变量, 输入电压范围03.3V,转换结果的范围:04095,即0V对应0,3.3V对应4095,中间均为一一对应的线性关系。 STM32F10系列中ADC有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 STM32 ADC的总转换时间$$T_{CONV} = 采样时间+12.5个ADC周期$$ 例: 当ADCCLK =14MHz,采样时间为1.5个ADC周期, 则$$T_{CONV} = 1.5 +12.5 =14个ADC周期=1us$$
stm32TIM定时中断
发表于2025-01-01|嵌入式
中断优先级配置NVIC来进行中断优先级配置(值越小,优先级越高)。 NVIC优先级分组NVIC的优先级组通过NVIC_PriorityGroupConfig(NVIC_PriorityGroup_X)来配置X表示哪个分组。 NVIC组 抢占优先级 响应优先级 NVIC_PriorityGroup_0 0bits 4bits,可分为0-15 NVIC_PriorityGroup_1 1bits 3bits NVIC_PriorityGroup_2 2bits 2bits NVIC_PriorityGroup_3 3bits 1bits NVIC_PriorityGroup_4 4bits 0bits 计数器计数频率$$CK_CNT = CK_PSC/(PSC+1)$$ CK_CNT:定时器时钟,CK_PSC:定时器时钟源,PSC:预频分值。 计数器溢出频率$$CK_CNT_OV = CK_CNT/(ARR +1)=CK_PSC/(PSC+1)/(ARR+1)$$ ARR:自动重...
stm32标准库初始化
发表于2024-12-30|嵌入式
标准库初始化 [!IMPORTANT] 采用Keil IDE基于C语言进行编写stm32运行代码(以stm32f10x系列为例),使用标准库首先需要引入相应的库文件,该文件需要自己去网上下载 新建工程编写逻辑代码前需要对keil将文件夹中的内容读入到IDE中 ,点击keil上方tab栏中的Project里面的New μVisioon Project...,找到存放共工程的文件夹,并在该文件夹中在下方的文件名中输入该工程的名称,后点击保存。 在芯片选择中选择STM32F1x对应的芯片,后点击OK,后续的窗口直接关闭即可。 后面再将对应的固件库文件放入到该工程文件夹中。 keil中把文件导入工程在keil中点击三个方块样式的工程管理按钮 在Project Items中的Groups可添加对应名的文件夹,然后在再右侧的files的下方Add Files添加对应的固件库文件,即可成功创建文件。 然后点击三个方块样式旁边的魔术棒按钮。 在Tab栏中C/C++中的Include Paths中添加工程所用到的文件以及Define中改为USE...
计算机网络-物理层
发表于2024-02-11|计算机网络
基础概念 数据:传送信息的实体,通常是有意义的符号序列。 信号:数据的电气/电磁的表现,是数据在传输过程中的存在形式。 信源:产生和发送数据的源头。 信宿:接受数据的终点。 信道:信号的传输媒介。一般用来表示向某一个方向传送信息的介质。 码元:码元指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为k进制码元,而该时长称为码元宽度。一码元可以携带多个比特的信息量。 速率:也叫数据率,指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。 码元传输速率:表示单位时间内数字通信系统所传输的码元个数,单位是波特,1波特表示数字通信系统每秒传输一个码元。 信息传输速率:表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒。 三种基本通信方式 单向通信。只有一个方向的通信而没有反方向的交互,仅需要一条信道。如,无线电广播、电视广播就属于这种类型。 半双工通信。通信的双方都可以发送或接收信息,但任何一方都不能同时发送和接受信息,需要两条信道。...
计算机网络-计算机网络体系结构
发表于2024-02-09|计算机网络
多层次ISP结构 ISP:因特网服务提供者/因特网服务提供商,是一个向广大用户综合提供互联网接入业务、信息业务、和增值业务的公司,如中国电信、中国联通、中国移动等。 分为主干ISP、地区ISP和本地ISP。 图中IXP可以提高同地区的网络通信速度。 计算机网络OSI七层模型中,下三层网络层,数据链路层和物理层就代表着通信子网(各种传输介质、通讯设备、相应的网络协议组成),路由器是网络层的通讯设备,交换机、网桥是数据链路层的通讯设备,集线器,中继器是物理层的通讯设备。 上三层应用层、表示层和会话层则是资源子网(实现资源共享功能的设备和软件的集合)。 计算机网络的分类按分布范围分类按分布范围可分为以下几种: 广域网(WAN)。广域网实现只要通过交换技术,需要交换机及路由器作为媒介来进行报文交换,一般各节点交换机都是高速链路,具有较大的通信容量。 城域网(MAN)。城域网大多采用以太网技术,有时也常并入局域网的范围讨论。 局域网(LAN)。局域网一般通过广播技术实现,覆盖范围较小。 个人区域网(PAN)。个人区域网指用无线技术连接起来的网络。 按交换技术分类按...
操作系统-输入输出管理
发表于2024-02-05|操作系统
IO设备IO设备就是可以将数据输入到计算机,或者可以接受计算机输出数据的外部设备,属于计算机中的硬件设备。 IO设备的分类 按使用特性 人机交互类外部设备。例如鼠标、键盘、打印机等——用于人机交互 存储设备。例移动硬盘、光盘等——用于数据存储 网络通信设备。调制解调器等——用于网络通信 按传输速率 低速设备。例如鼠标、键盘等——传输速率为每秒几个到几百字节。 中速设备。如激光打印机等——传输速率为每秒数千至上万个字节。 高速设备。如硬盘等——传输速率为每秒数千字节至千兆字节。 按信息交换的单位分类 块设备。传输速率较高,可寻址,即对它可随机地读/写任一块,如磁盘等。 字符设备。传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式,如鼠标、键盘等。 IO控制方式程序直接控制方式从计算机外部设备读取的每个字,CPU需要对外设状态进行循环检查,直到确定该字已经在IO控制器的数据寄存器中。 优点:实现简单。在读/写指令之后,加上实现循环检查的一系列指令即可。 缺点:CPU和IO设备只能串行工作,CPU需要一直轮询检查,长期处于“忙等”状...
1234…10
avatar
LsWorld
专注机器学习、深度学习与工程实践
文章
112
标签
107
分类
34
GitHub
公告
欢迎来到 LsWorld,这里记录机器学习学习路线、实验笔记和代码实践。
最新文章
图神经网络GNN:让模型学会理解关系数据2026-06-20
PPO算法:从策略梯度到裁剪目标函数2026-06-15
HEFT算法:异构计算中的任务调度方法2026-06-14
强化学习:从状态、动作到马尔可夫决策过程2026-06-13
文本处理:让自然语言变成模型能理解的数字2026-06-07
分类
  • C5
  • Flutter2
  • Hexo2
  • JavaScript1
  • TypeScript1
  • Vercel1
  • Vue4
  • Vue31
标签
es6 单片机 AICompanion 爬虫 指针 HEFT 前端工程化 随机森林 内存管理 博客部署 操作系统 超参数调优 PPO Vercel Vue3 stm32 typeorm 应用层 图神经网络 Python NLP Dart DAG 优化算法 MDP 强化学习 webpack javascript 自然语言处理 hexo 大模型 GCN 泛化能力 C TypeScript nestjs GitHub Pages flutter AI角色 计算机网络体系结构
归档
  • 六月 2026 7
  • 五月 2026 13
  • 二月 2025 2
  • 一月 2025 10
  • 十二月 2024 1
  • 二月 2024 3
  • 一月 2024 6
  • 十二月 2023 14
网站信息
文章数目 :
112
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By LsWorld框架 Hexo 6.2.0|主题 Butterfly 5.5.5-b1