自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 再谈输入捕获——测距超声波模块

注意点:就是我们的自动装载值,我们设定了65535,在主程序中,我们先设置成0(__HAL_TIM_SET_COUNTER(&htim2,0);上次文章中,定义了两个变量up_data和down_data,分别去读取通道1和通道2的计数值,得到的差进行数据处理,从而得到超声波的测距距离。我们利用Reset模式,在echo的上升沿复位计数值为0,这样我们就可以直接读取通道2的值,进行数据处理即可。

2025-06-18 10:11:44 189

原创 PWM呼吸灯

1、 开启对应 PWM 通道 :HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_3);PB0接LED发光二极管,PB0端口设置如上图所示。//用户改变PWM_Value,从而去控制LED。一、LED端口设置、TIM3 PWM设置。2、在中断回调函数中。

2025-06-11 14:42:46 88

原创 输入捕获——测距超声波模块

/获得下降沿捕获的值。//获得上升沿捕获的值。1、直接模式:Channel1(上升沿触发)2、间接模式:Channel1(下降沿触发)二、中断设置、读取数据及处理。2、捕获中断 读取数据及处理。

2025-06-11 10:25:03 254

原创 定时器三种从模式

门模式下,控制信号出现下降沿或上升沿,从模式控制器会暂停或继续定时器计数,在这两个边沿的时刻,也会将触发器中断标志位置1,但门模式并不复位计数器值,不再触发定时器更新中断。注:重装载值设置为50000-1 是为了便于观察现象,可自行改变数值观察现象。PA0可接传感器信号(可用小车红外寻迹模块)一、从模式控制器——复位模式。三、从模式控制器——触发模式。二、从模式控制器——门模式。

2025-06-10 20:48:31 115

原创 外部脉冲计数(PA0 |PA1)

从模式控制器被占用时,可使用外部时钟模式2对外部脉冲信号进行计数。

2025-06-10 10:17:08 134

原创 STM32每个定时器(TIM)回调函数的详细解析,包括​​触发条件​​和​​典型应用场景

​​触发条件​​:定时器计数达到自动重装载值(ARR)时触发(即溢出中断)。​​触发条件​​:定时器计数达到ARR值的一半时触发(需启用DMA或中断)。​​触发条件​​:定时器收到外部触发信号(如ETR引脚输入或内部触发)。​​触发条件​​:输入捕获DMA传输完成一半时触发(用于双缓冲模式)。​​回调函数类型​​ ​​何时使用​​ ​​示例场景​​。​​触发条件​​:PWM脉冲输出完成一个周期时触发。​​触发条件​​:PWM DMA传输完成一半时触发。​​触发条件​​:触发信号DMA传输完成一半时触发。

2025-06-04 10:07:44 335

原创 strlen()的用法及注意事项

​​二进制数据​​ 使用固定长度(如 sizeof 或手动记录) sizeof(data) 或 HAL_UART_Transmit(…​​无符号字符数组​​ 强制转换为 char*(需确保有 ‘\0’) strlen((char*)receive_data)// 二进制数据,无 ‘\0’​​问题​​:二进制数据中可能不含 ‘\0’,strlen() 会持续读取内存直到意外遇到 ‘\0’。char 可能是 ​​有符号​​(-128~127)或 ​​无符号​​(0~255),取决于编译器。

2025-05-30 08:40:09 415

原创 ​​代码解析(1):pd3_state = (GPIOD->IDR & GPIO_PIN_3) ? 1 : 0;

0000 0000 0000 1000 → 结果非零(PD3=高电平)​​四、等效代码对比​​​​1、使用HAL库函数​​// 返回GPIO_PIN_SET或GPIO_PIN_RESET​​区别​​:HAL函数内部同样通过IDR寄存器实现,但增加了可移植性处理。​​2、直接判断状态​​// PD3高电平} else {// PD3低电平​​效果相同​​,但三元运算符更简洁。​​五、实际应用场景​​​​1、检测按键输入​​。

2025-05-16 11:01:10 466

原创 一、STM32启动代码中三个关键初始化函数详解——HAL_Init()、delay_init(72)与SystemClock_Config()的作用与协作​

​​2、时钟树分配​​ 设置AHB(72MHz)、APB1(36MHz)、APB2(72MHz)分频,满足不同外设时钟需求。3、​​SysTick定时器启动​​ 初始化系统滴答定时器,为HAL库的HAL_Delay()提供基准时钟源。​​2、参数72的意义​​ 传入系统时钟频率(MHz),计算定时器计数周期(如72MHz时1us=72个时钟周期)。​​3、提供用户级延时​​ 支持delay_us()和delay_ms(),避免直接使用HAL_Delay()的阻塞问题。HAL_Init();

2025-05-16 09:25:48 359

原创 uCOS-III启动与初始化

使用UCOSIII的步骤: 第一步:使用OSInit()初始化UCOSIII; 第二步:创建一个Start_task()任务; 第三步:调用oSStart()函数开启UCOSIII。 注意:我们在调用OSStart()开启UCOSIII之前一定要至少创建一个任务,其实我们在调用OSInit()函数初始化UCOSI的时候已经创建了一个空闲任务。

2024-02-20 11:30:20 493

空空如也

空空如也

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

TA关注的人

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