自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(93)
  • 收藏
  • 关注

原创 蓝桥杯嵌入式——在持续的事件但只加一次

【代码】蓝桥杯嵌入式——在持续的事件但只加一次。

2025-11-10 17:32:12 81

原创 蓝桥杯嵌入式——字符串拷贝方式

【代码】蓝桥杯嵌入式——字符串拷贝方式。

2025-11-10 17:30:34 153

原创 蓝桥杯嵌入式——ADC消除浮点误差

【代码】蓝桥杯嵌入式——ADC消除浮点误差。

2025-11-10 17:29:23 320

原创 蓝桥杯嵌入式——LED灯

3.在定时器中设计数器(static uint16_t count=0),每进入一次定时器中断计数器加一(count++),直到加到50次表示经过5s后关闭定时器中断并且清除定时器中断标志。1.在cube中配置定时器TIMx,把时钟来源配置为内部时钟(Internal Clock),再设置PSC(8000-1)和ARR(10000-1),打开定时器中断。2.在需要进入定时器中断的条件下开启定时器中断( HAL_TIM_Base_Start_IT(&htimx) )下列代码才能正确将X到50后变为1。

2025-11-10 17:28:11 373

原创 蓝桥杯嵌入式——动态调整PWM输出频率和比较值(占空比)

/设置定时器 TIM3 的周期(即 PWM 信号的频率)---------------->CCR/(ARR+1)=0.1(设置占空比为10%)-------->CCR=0.1*(ARR+1)在cube中设定时器通道TimxChy的PSC为80-1,ARR为1000-1,CCR为500(TIMx->CCRy=500)定时器 TIM3 的时钟源为 1MHz(即每秒计数 1,000,000 次):将 ARR 转换为总步数(因为 ARR 是最大值,实际周期是 ARR+1)T=(ARR+1)*计数时间=1/f。

2025-11-10 17:26:48 311

原创 LVGL显示中文

选择文件就选择刚刚下载的字体文件,然后Symbols中填入你要显示的字就可以了。点击convert。会生成一个.c文件,放入你的项目中即可。Bpp选择的越大,显示的字体越好看,但是也越占硬件资源,依情况而选就可以。

2025-11-07 13:05:52 121

原创 ESP32S3移植LVGL_v8.3.9

准备工作需安装VScode、platformio插件。

2025-11-07 13:03:49 761

原创 ESPS3不断重启问题

下的TFT_eSPI库并不适配,产生兼容性问题,要将arduino核心版本回退到2.0.14。串口打印如下,并且不断重启。

2025-11-07 13:02:45 285

原创 蓝桥杯嵌入式——RTC实时时钟

4.找到闹钟中断函数( void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc){} ),在中断函数内写时间到了设置时间后发送的事件。2.在header.h文件中引入rtc.h文件。3.编写显示时钟日期函数。

2025-11-07 12:59:21 114

原创 蓝桥杯嵌入式——eeprom读写

3.在i2c_hal.h声明函数void eeprom_write(uint8_t addr,uint8_t dat)和uint8_t eeprom_read(uint8_t addr)uint eeprom_data=( eeprom(1)<<8 )+eeprom_read( 2 );5.定义变量调用eeprom读取函数接收数据( uint8_t dat =eeprom_write(0) )4.在主函数中初始化I2C( I2CInit() )//I2CInit要放在LCD_Init( )后面。

2025-11-06 10:16:47 763

原创 蓝桥杯嵌入式——利用定时器进行串口不定长数据接收

(HAL_UART_Receive_IT(&huart1,&rec_data,1) ) )用户代码中HAL_UART_Receive_IT在MX_USART1_UART_Init之前被调用,这可能导致UART模块尚未初始化完成就开始接收,导致错误。//重置定时器,判断接收过程中的超时(超过一定时间表示数据接收完毕)//标志位被设置,表示接收到了数据,可以处理数据。if(rec_flag){// 如果接收到数据。

2025-11-06 10:15:05 1321

原创 蓝桥杯嵌入式——串口发送和接收

1.在cube中打开串口USART1,然后配置Mode为异步通信(Asynchronous),配置波特率,配置GPIO(将对应引脚(PA9、PA10)设置为USART1_TX或USART1_RX),使能中断。extern uint8_t rec_data )1.在main函数中,先使能中断( HAL_UART_Receive_IT(&huart1,&rec_data,1) )3.调用接收中断函数接收数据( HAL_UART_Recieve_IT(huart,&rec_data,1) )

2025-11-06 10:14:29 335

原创 蓝桥杯嵌入式——adc测量

1.在cube中配置引脚PB15和PB12为ADCx_INy,并且打开这两个ADCx_INy为Single-ended。4.获取ADC的值( uint32_t adc_value=HAL_ADC_GetValue(&hadc1) )3.先开启ADC( HAL_ADC_Start(&hadcx) )&hadc1测量R38 &hadc2测量R37。2.在header.h中引入adc.h。

2025-11-06 10:13:52 162

原创 蓝桥杯嵌入式——输入捕获测555定时器频率

1.在cube中配置PA15和PB4为TIMx1_CHy和TIMx2_CHy2,让定时器x1和x2的通道y1和y2为内部时钟(Internal Clock ),把Combined Channels配置为PWM Input on CH1,配置定时器x的psc为80-1,使能中断。1.在cube中配置PA15和PB4为TIMx1_CHy和TIMx2_CHy2,让定时器x1和x2的通道y1和y2为输入捕获模式( Input Capture direct mode ),配置定时器x的psc为80-1,使能中断。

2025-11-06 10:11:00 331

原创 蓝桥杯嵌入式——输入捕获测量引脚输出PWM频率

2.激活(Activated)定时器x,让定时器x的通道y为输入捕获模式( Input Capture direct mode )4.在main函数中打开定时器x中断( HAL_TIM_IC_Start_IT(&htimx,TIM_CHANNEL_y) )7.调用读取捕获CNT值的函数(该函数实际上是读取CCR的值,因为在捕获到上升沿时,会将CNT赋值给CCR)读取CNT的值。5.设置变量记录频率和CNT的值( uint32_t fre,capture_value )10.将fre的值显示在LCD中。

2025-10-31 17:24:46 316

原创 蓝桥杯嵌入式——PWM输出

2.选择一个定时器x和定时器通道y,通道y设置为PWM Generation CHy。//占空比为50% )1.在cube中选择一个引脚为TIMx_CHy。5.在main函数中,使能定时器PWM输出。3.按照需要的输出频率配置PSC和ARR。4.在header.h中引入tim.h。周期T=1/fre(单位为s)

2025-10-31 17:24:13 309

原创 蓝桥杯嵌入式——lcd高亮显示

【代码】蓝桥杯嵌入式——lcd高亮显示。

2025-10-31 17:23:17 416

原创 蓝桥杯嵌入式——按键长按

③判断是否符合短按要求 ( A0_state==0 && A0_last_state==0) ,TIMx->CNT <10000。7.让原来的初始值变为末尾值( A0_last_state=A0_state )

2025-10-31 17:22:35 395

原创 蓝桥杯嵌入式——定时器中断

2.在cube中配置周期(时钟频率为80000000,记住定时器中断周期公式,只需配置PSC和RCC,比如配置1s则PSC为8000-1,RCC为10000-1)5.在主函数中一定要使能定时器中断( HAL_TIM_Base_Start_IT(&htim2))1.在cube中先将时钟来源设置为内部时钟( Internal Clock )3.打开中断,使能中断( NVIC Settings为Enable )4.在keli中headfile.h中引入tim.h。6.找到中断回调函数,开始中断内容编写。

2025-10-31 17:22:02 407

原创 蓝桥杯嵌入式

/解决引入LCD后LED全亮的问题。//内容在LCD哪行。2.在headfile.h中引用lcd.h,不需要引入fonts.h( #include “lcd.h )//LCD上需要打印的内容。1.在keli中引入文件fonts.h、lcd.c、lcd.h。//一行只能显示20个字符。

2025-10-31 17:21:30 314

原创 蓝桥杯嵌入式——按键

6.再次判断按键电平是否符合要求( if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0))==0 )3.读取按键的标志位( A0_state=HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) )4.判断按键电平是否符合按下要求( A0_state==0 && A0_last_state==1 )2.设置按键的初始标识符和末尾标识符( A0_state、A0_last_state )5.让原来的初始值变为末尾值( A0_last_state=A0_state )

2025-10-31 17:20:51 265

原创 蓝桥杯嵌入式——LED

②PC8--PC15输出低电平 ( HAL_GPIO_WritePin(GPIOC,GPIO_PIN_8<<(led-1),GPIO_PIN_RESET) )2.①PD2输出高电平( HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET) )③PD2输出低电平( HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET) )(led_mode++;led_mode=led_mode%2或者led_mode^=1)

2025-10-31 17:20:19 269

原创 蓝桥杯嵌入式——新建工程

6.generate project 和 open project,在keli上找到配置芯片并且Debug为DSD,Flash Download中勾上Reset and run,然后编译运行一下。5.配置项目管理,IDE为MDK-ARM,取消Use Default Firmware Location,勾上generate 'c'/'h' files。4.配置时钟树,24MHz,HSE,PLLCLK,HCLK配置为80MHz。2.选择芯片型号STM32G431RBT6。

2025-10-31 17:19:47 266

原创 Python——面向对象

2025-10-18 14:25:05 792

原创 Python——异常,模块与包

2025-10-18 14:23:13 212

原创 Python——文件操作

2025-10-18 14:21:21 148

原创 Python——函数(2)

设置默认值,最后一个一定要设置,否则报错。

2025-10-18 14:19:27 161

原创 Python——数据容器

2025-10-14 14:00:38 391

原创 Python——函数(1)

2025-10-14 13:56:48 362

原创 Python——循环语句

2025-10-14 13:55:04 125

原创 Python——判断语句

2025-10-14 13:54:20 199

原创 Python——基本语法

input默认接收的为字符串。

2025-10-14 13:53:18 196

原创 STM32F103C8T6——Flash

2025-10-12 21:17:06 115

原创 STM32F103C8T6——看门狗

如果独立看门狗已经出硬件选项或软件启动,LSI振荡器将被强制在打开状态,并且不能被关闭,在LSl振荡器稳定后,时钟供应给IWDG(如果我们开启了独立看门狗,那么与LSI就会跟随强制打开,等LSI稳定后;喂狗操作,其实就是重置递减计数器,减到0之后就复位,程序正常运行时,为了避免复位,就得在这个计数器减到0之前,及时地把计数值加大点。第二步,就是配置各个寄存器(比如,预分频,和窗口值),窗口看门狗没有写保护,第二步就可以直接写这些寄存器。最后一步,启动独立看门狗,在主循环里,不断执行进行喂狗。

2025-10-12 21:16:17 301

原创 STM32F103C8T6——PWR电源控制

2025-10-12 21:15:30 91

原创 STM32F103C8T6——W25Q64存储器、Unix时间戳、BKP和RTC

DI,就是每来一个时钟计一个数的用途,DIV计数器,是一个自减计数器,每来一个输入时钟,DIV的值自减一次,自减到0时,再来一个输入时钟,DIV输出一个脉冲,产生溢出信号,同时DIV从PRL获取重装值,回到重装值继续自减,分频器其实就是一个计数器,计几个数溢出一次,那就是几分频,一个寄存器用来不断地计数,另一个寄存器,我们写入一个计数目标值,用来配置是几分频(重装值写入几,就是几+1分频)只要VBAT有电池供电,即使STM32主电源断电,BKP的值也可以维持原状。重装载寄存器RTC_PRL。

2025-10-12 21:14:42 325

原创 STM32F103C8T6——SPI通信

上升沿之后,下一个边沿就是下降沿,在下降沿时,主机和从机内,都会进行数据采样输入。波特率发生器时钟的上升沿,所有移位寄存器向左移动一位,移出去的位放到引脚上。波特率发生器时钟的下降沿,引脚上的位,采样输入到移位寄存器的最低位。

2025-10-12 21:11:29 188

原创 STM32F103C8T6——MPU6050陀螺仪

低通滤波器可以让输出数据更加平滑,配置滤波器参数越大,输出数据抖动就越小(0是不使用低通滤波器,第一个:采样频率分频器,里面的8位为一个整体:作为分频值,配置采样频率的分频系数。陀螺仪时钟为8KHZ,使用了滤波器,陀螺仪时钟就是1KHZ)循环模式(写1,设备进入低功耗,过段时间,启动一次)睡眠模式(写1,芯片睡眠,心片不工作,进入低功耗)温度传感器失能(写1之后,禁用内部的温度传感器)设备复位(写1,所有寄存器都恢复到默认值)后面6位,可以分别控制6个轴进入待机模式。ID号中间这6位,固定为110100。

2025-10-12 21:10:36 200

原创 STM32F103C8T6——I2C通信

(线与:就是只要有任意一个或多个设备输出了低电平,总线就处于低电平,只有所有设备都输出高电平,才处于高电平)12C可以利用这个电路特性,执行多主机模式下的时钟同步和总线仲裁。2.SDA数据线:对于SDA数据线,从机不允许主动发起对SDA的控制,只有在主机发送读取从机的命令后,或者从机应答的时候,从机才能短暂地取得SDA的控制权。②主机的SDA在发送的时候是输出,在接收的时候是输入,同样,从机的SDA也会在输入和输出之间反复切换,避免总线没协调好导致电源短路(半双工的协议)第二,避兔了引脚模式的频繁切换。

2025-10-12 21:09:53 465

原创 STM32F103C8T6——USART通信

优点是,数据直观易理解,非常灵活,比较适合一些输入指令进行人机交互的场合,比如蓝牙模块常用的AT指令,CNC和3D打印机常用的G代码。第二种,如果无法避免载荷数据和包头包尾重复,尽量使用固定长度的数据包,这样由于载荷数据是固定的,只要我们通过包头包尾对齐了数据。优点是,传输最直接,解标数据非常简单,比较适合一些模块发送原始的数据,比如一些使用串口通信的陀螺仪、温湿度传感器。第四步,如果你只需要发送的功能,就直接开启USART,初始化就结束了。第一种,限制载荷数据的范围,在发送的时候,对数据进行限幅。

2025-10-12 21:08:54 238

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除