avatar
文章
114
标签
110
分类
34
Home
Archives
Categories
Tags
About
LsWorld
Home
Archives
Categories
Tags
About

LsWorld

stm32硬件实现与w25qxx通信
发表于2025-01-31|嵌入式
使用的型号为stm32f103c8t6与w25q64。 STM32CubeMX配置与引脚衔接根据stm32f103c8t6引脚手册,采用B12-B15四个引脚与W25Q64连接,实现SPI通信。 W25Q64 SCK(CLK) PB13 MOSI(DI) PB15 MISO(DO) PB14 CS(这里不采用硬件CS,所以接任意GPIO口都可以) PB12 STM32CubeMX配置这里对于时钟相关的配置就不做赘述了,由于是练习所以将系统时钟配置成了72MHz,主要是配置引脚。 在引脚配置将PB12配置为推挽输出,默认电平为高。 PB13,PB14,PB15均使用硬件的SPI。 可以在系统核心的GPIO中的SPI中看到这三个配置。 然后到SPI2中将参数配置,采用高位优先,波特率为18MB/s,若不是则需要调整Prescaler分频到18MB/s,传输以字节为单位。 这里先不开启中断,所以NVIC setting里面的中断没有选上,做好基础配置后就可以生成代码,点击GENERATE CODE。 在Src中就会...
STM32F103C8T6综合学习项目的具体功能实现详解
发表于2025-01-18
代码项目地址为stm32综合学习项目。 项目概述(详细可在项目的Project_Structure中查看)该项目基于STM32F103C8T6芯片,学习I2C,GPIO,ADC,EXTI,PWM等基础模块的使用,并通过模块化的方式使代码具有良好的可读性与健壮性。 准备的模块 OLED显示屏(I2C) 蜂鸣器模块(GPIO) 光敏电阻传感器(ADC) 热敏电阻传感器(ADC) MPU6050陀螺仪(I2C) 旋转编码器(EXTI+TIM) 舵机(PWM) LED指示灯(GPIO) 按钮(GPIO+EXTI) STM23F103C8T6芯片 文件结构设计硬件驱动层Hardware/ ├── OLED.c ├── OLED.h ├── OLED_Font.h ├── beeper.c ├── beeper.h ├── light_sensor.c ├── light_sensor.h ├── temp_sensor.c ├── temp_sensor.h ├── mpu6050.c ├── mpu6050.h ├── encoder.c ├── encoder.h ...
基于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波特表示数字通信系统每秒传输一个码元。 信息传输速率:表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒。 三种基本通信方式 单向通信。只有一个方向的通信而没有反方向的交互,仅需要一条信道。如,无线电广播、电视广播就属于这种类型。 半双工通信。通信的双方都可以发送或接收信息,但任何一方都不能同时发送和接受信息,需要两条信道。...
1234…10
avatar
LsWorld
专注机器学习、深度学习与工程实践
文章
114
标签
110
分类
34
GitHub
公告
欢迎来到 LsWorld,这里记录机器学习学习路线、实验笔记和代码实践。
最新文章
深度学习入门:从神经网络到学习路线2026-07-08
MLP多层感知机:从原理到PyTorch实现2026-07-05
图神经网络GNN:让模型学会理解关系数据2026-06-20
PPO算法:从策略梯度到裁剪目标函数2026-06-15
HEFT算法:异构计算中的任务调度方法2026-06-14
分类
  • C5
  • Flutter2
  • Hexo2
  • JavaScript1
  • TypeScript1
  • Vercel1
  • Vue4
  • Vue31
标签
机器学习 泛化能力 mysql 过拟合 优化算法 GBDT GitHub Pages es6 正则表达式 AICompanion 爬虫 TypeScript 嵌入式 javascript npm 自然语言处理 VueRouter NLP 复变函数 前端 监督学习 分词 策略梯度 node.js JavaScript 情感交互 任务调度 强化学习 Vue 梯度下降 AI聊天 flutter 物理层 GCN 集成学习 指针 Hexo 存储系统 Dart 马尔可夫决策过程
归档
  • 七月 2026 2
  • 六月 2026 7
  • 五月 2026 13
  • 二月 2025 2
  • 一月 2025 10
  • 十二月 2024 1
  • 二月 2024 3
  • 一月 2024 6
网站信息
文章数目 :
114
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By LsWorld框架 Hexo 6.2.0|主题 Butterfly 5.5.5-b1