LsWorld

LsWorld

freertos中常用api总结
发表于2025-02-12|嵌入式
1. 任务管理 (Task Management) xTaskCreate(): 创建任务。 功能: 动态创建一个新的任务,并将其加入到 FreeRTOS 的任务调度器中。 常用场景: 在系统初始化阶段或运行时动态创建任务,用于执行不同的功能模块。 关键参数 : pvTaskCode: 指向任务函数的指针,任务代码的入口。 pcName: 任务名称,字符串形式,方便调试和追踪。 usStackDepth: 任务堆栈大小,以字 (word) 为单位,需要根据任务需求合理配置。 pvParameters: 传递给任务函数的参数,void 指针类型,可以传递任意类型数据。 uxPriority: 任务优先级,数值越大优先级越高,FreeRTOS 会根据优先级进行任务调度。 pxCreatedTask: 任务句柄指针,用于存储创建的任务句柄,后续操作任务时需要使用该句柄。 vTaskDelete(): 删除任务。 功能: 删除指定的任务。可以删除自身任务或其它任务。 常用场景: 任务执行完成后不再需要,或者需要动态管理任务生命周期时...
STM32根据DHT11温湿度分析城市相似度项目总结
发表于2025-02-04|嵌入式
所使用的模块与工具: STM32F103C8T6 DHT11温湿度传感器 ESP32WROOM(采用ESP-IDF) EMQX Serverless(MQTT Broker) TiDB Cloud(云数据库) 腾讯位置服务API 和风天气API 硬件层STM32Stm32Cubemx配置 使用引脚: PA10->D17(USART1_RX连到ESP32的D17) P9->D16(USART1_TX连到ESP32的D16) PB10->LED(用于测试系统是否正常运作,设置为GPIO_Output,推挽输出) PA0->DHT11 Do口(芯片左边标S的口,最右边有-的标志连GND,中间连VCC) Pinout&Configuration 由于硬件层面比较简单,就不采用DMA来传输了 SystemCore配置 GPIO PA0 GPIO output level: low(默认输出低电平) GPIO mode : Output Push Pull(推挽输出) GPIO Pull-up/Pull-down:No p...
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:自动重...
12…8
avatar
LsWorld
文章
92
标签
58
分类
29
Follow Me
公告
This is my Blog
最新文章
freertos中常用api总结2025-02-12
STM32根据DHT11温湿度分析城市相似度项目总结2025-02-04
stm32硬件实现与w25qxx通信2025-01-31
STM32F103C8T6综合学习项目的具体功能实现详解2025-01-18
基于STM32综合学习项目结构设计2025-01-15
分类
  • C5
  • Flutter2
  • JavaScript1
  • TypeScript1
  • Velcel1
  • Vue4
  • Vue31
  • flutter1
标签
数制与编码 踩坑 输入输出管理 物理层 hexo Dart npm 内存管理 输入输出系统 TypeScript flutter 数电 基础 错误排查 进程与线程 总线 计算机网络体系结构 串 node.js typeorm 运输层 javascript Vercel 计算机组成原理 计算机网络 nestjs Vue dart JavaScript 操作系统 JSON Vuex es6 数据结构 复变函数 前端工程化 中央处理器 VueRouter 应用层 C
归档
  • 二月 2025 2
  • 一月 2025 10
  • 十二月 2024 1
  • 二月 2024 3
  • 一月 2024 6
  • 十二月 2023 14
  • 十一月 2023 6
  • 十月 2023 6
网站信息
文章数目 :
92
本站访客数 :
本站总浏览量 :
最后更新时间 :
© 2025 - 2026 By LsWorld框架 Hexo 6.2.0|主题 Butterfly 5.5.4