当前位置: 首页 > news >正文

单片机实现挡位调节

简易挡位调节模块

1、初始化硬件

  • 这里就不过多赘述了,去看我之前的帖子,我这篇帖子选择TIM2的1通道

PWM的简单应用

2、触发方式

(1)中断

I 初始化硬件

  • 启用按钮的中断
    img
  • 在主函数外写入中断回调函数
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){uint16_t value;__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, value);
}
/* USER CODE END 0 */

(2)轮询

即在循环体内频繁判断按钮是否被按下

  • 在主循环外侧定义全局变量Value
uint16_t Value;
/* USER CODE END 0 */
  • 在循环体内读取按钮处接口状态
	  HAL_Delay(99);if(HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin) == GPIO_PIN_RESET){/*-----------写入增加比较值的代码-----------------*/}

2、调节方式

I环状链表

代码部分

这里选择中断处理的方式来写

  • 在主函数外侧声明结构体数组并重构中断回调函数
/* USER CODE BEGIN 0 */
struct Node{uint16_t CompareValue;
}Level[6];
uint16_t value;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){value = Level[value].CompareValue;__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, (value * 2000));
}
/* USER CODE END 0 */
  • 在主函数内初始化数组
  /* USER CODE BEGIN Init */Level[0].CompareValue = 1;Level[1].CompareValue = 2;Level[2].CompareValue = 3;Level[3].CompareValue = 4;Level[4].CompareValue = 5;Level[5].CompareValue = 0;/* USER CODE END Init */

原理

  • 当按钮触发后,会产生中断回调,将PWM比较值变成环状链表的下一个键值
    img

实验效果

  • 可呈现6个挡位得亮度变化
    img

II循环体

这里以"轮询的代码为例"

  • 在主循环内写入以下内容
  /* USER CODE BEGIN WHILE */while (1){//判断比较值是否装满if(Value > 19999)Value = 0;HAL_Delay(99);//延迟0.1秒//判断按钮是否按下if(HAL_GPIO_ReadPin(B1_GPIO_Port, B1_Pin) == GPIO_PIN_RESET){//如果按下,则增加比较值Value += 500;__HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, Value);}/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}

实验原理、

  • 每隔0.1秒,询问一次按钮处GPIO的状态,如果为按下状态,则增加500比较值
  • 当比较值满了,则清空

实验效果

img

3、代码清单

  • stm32f4xx_hal.h
/*** @brief  读取指定的输入脚* @param  GPIOx 指定的GPIO口*                    * @param  GPIO_Pin 指定的GPIO引脚*         This parameter can be GPIO_PIN_x where x can be (0..15).* @retval 输入引脚的状态*/
GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  • stm32f4xx_hal_gpio.h
/** * @brief  GPIO 状态*/
typedef enum
{GPIO_PIN_RESET = 0,//置0GPIO_PIN_SET//置1
}GPIO_PinState;

4、总结

(1)触发方式

触发方式 特点
轮询 占用资源,效率高
中断 效率高,但是占用资源

(2)调节方式

调节方式 特点
环状链表 读写方便,但数据离散,占资源
循环体 可连续显示效果,但可读性不高
http://www.wxhsa.cn/company.asp?id=4699

相关文章:

  • 完整教程:从 WildCard 野卡到 gptplus.plus:一次解决 OpenAI 支付难题的实战复盘,轻松搞定Gpt充值
  • 阿里 Qoder 新升级,Repo Wiki 支持共享、编辑和导出
  • 长城杯WriteUp
  • vite取别名@
  • JavaScript数据网格方案AG Grid 34.2 发布:更灵活的数据结构、更流畅的大数据交互与全新 UI 体验
  • BOE(京东方)IPC电竞嘉年华盛典圆满收官 第三届无畏杯总决赛引领电竞生态发展热潮
  • P1886 滑动窗口 /【模板】单调队列
  • kingbase金仓数据库docker部署完整步骤
  • glTF/glb功能、应用和 5 个基本最佳实践
  • AI 应用开发,不就是调个接口么?
  • 95.费解的开关
  • godot4人物移动一段距离后随机旋转代码,(死循环)
  • Spotify 音乐ML练习数据集含158 个特征,11
  • abc423
  • AI辅助分析HP DL360 GEN7 服务器安装USB3扩展卡
  • 最新药物数据集下载:来自Drugs
  • 【VPX361】基于3U VPX总线架构的XCZU47DR射频收发子模块
  • 自动驾驶ADAS数据集 13万张高清道路车辆识别图像 覆盖多场景智能交通应用 支持目标检测图像识别模型训练与AI视觉算法开发
  • Norwood-Hamilton男性脱发分级图像集|2400+张多角度高清头皮图像|涵盖7类脱发诊断标注|适用于AI诊断工具开发、皮肤科研究与植发产品研发|包含5角度标准化拍摄、支持秃顶早期检测
  • AI生成文本检测数据集:基于不平衡数据集(人类94% vs AI 6%)的高效机器学习模型训练,涵盖ChatGPT、Gemini等LLM生成内容
  • 400小时大规模南昌方言数据集助力方言保护、AI语音识别技术开发与文化传承研究,覆盖多样化场景与说话者,专业采集高质量音频与文本标注,支持深度学习、语音模型训练、方言教学工具及本地化智能语音交互应用
  • 350+张高清晰度冲积土、黑土、煤渣土、红土四类土壤类型图像资源 ,专为计算机视觉算法训练与地球科学研究设计,支持精准农业土壤识别、地质勘探辅助分析及环境监测应用,提升土壤分类模型准确性
  • 200 万份脑部 MRI 扫描 + 放射科报告数据集:DICOM 格式高分辨率影像,覆盖 50+ 脑部病理(脑肿瘤、神经退行性疾病、多发性硬化症等),支持 AI 病理识别 _ 分类 _ 分割
  • 30万份行业报告数据集:覆盖金融科技医疗能源等20+行业领域,2010-2024年完整时间跨度,提供高质量PDF和文本格式,支持深度学习模型训练、行业趋势分析、市场竞争研究、学术论文写作的多场景应用
  • 23,463张无人机和卫星图像高质量标注,覆盖20个类别包括港口船舶车辆飞机,支持YOLO和VOC格式,专为深度学习目标检测算法优化,训练集验证集均衡划分提升模型鲁棒性,填补小目标检测数据空白
  • 阶跃星辰开源Step-Video-T2V模型:300亿参数打造高保真视频生成新标杆
  • 多多报销小程序系统详解
  • 第0章 矿卡EBAZ4203爆改zynq开发板介绍和VIVADO的安装
  • 德创恋爱话术宝典介绍
  • 无痕检测是否注册iMessage服务,iMessages数据筛选,iMessage蓝号检测协议