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

[STM32C0] 【STM32C092RC 测评】+08 定时器1输出可变脉宽

今天对脉冲宽度进行测试:一:PWM脉宽知识分享:
PWM(脉冲宽度调制)的脉冲宽度是指在一个周期内信号处于高电平(或有效状态)的时间长度,通常用时间单位(如微秒μs、毫秒ms)或占空比(百分比)表示。以下是关键点解析:
脉冲宽度(Pulse Width):单个PWM周期中高电平的持续时间。
公式:
脉冲宽度=高电平时间周期总时间×100%(占空比形式)
脉冲宽度=周期总时间高电平时间​×100%(占空比形式)或直接以时间表示(例如2ms)。
占空比(Duty Cycle):脉冲宽度与周期的比值,反映高电平所占比例。
示例:
周期=10ms,高电平时间=3ms → 脉冲宽度=3ms,占空比=30%。
通过调整高电平时间(脉冲宽度)改变占空比,从而控制输出能量。
例如:
电机调速:增大脉冲宽度 → 占空比提高 → 电机转速加快。
LED调光:脉冲宽度减小 → LED亮度降低。
二:程序代码如下:

复制

  1. void UpdataDutyData(int value)
  2. {
  3. TIM_MasterConfigTypeDef sMasterConfig = {0};
  4. TIM_OC_InitTypeDef sConfigOC = {0};
  5. htim1.Instance = TIM1;
  6. htim1.Init.Prescaler = 47;
  7. htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  8. htim1.Init.Period = 999;
  9. htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  10. htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;
  11. if (HAL_TIM_OC_Init(&htim1) != HAL_OK)
  12. {
  13. Error_Handler();
  14. }
  15. sConfigOC.OCMode = TIM_OCMODE_PWM1;
  16. sConfigOC.Pulse = 999 * value/100 ;
  17. sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
  18. sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  19. if (HAL_TIM_OC_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  20. {
  21. Error_Handler();
  22. }
  23. HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);
  24. }

上述代码在之前的的定时器2中被调用,如下所示:

复制

  1. int tempdata = 0 ;
  2. void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
  3. {
  4. /* USER CODE BEGIN Callback 0 */
  5. /* USER CODE END Callback 0 */
  6. /* USER CODE BEGIN Callback 1 */
  7. if (htim->Instance == TIM2) {
  8. Time2point++;
  9. if(Time2point >=1000)
  10. {
  11. Time2point = 0 ;
  12. HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5);
  13. //HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_9);
  14. tempdata =tempdata + 5 ;
  15. if(tempdata >=100)tempdata = 5 ;
  16. UpdataDutyData(tempdata);
  17. }
  18. }

三:实物测试如下:


如上图所示,基本的脉宽测试功能正常,可以制作一些小夜灯什么的。


---------------------
作者:聪聪哥哥
链接:https://bbs.21ic.com/icview-3455824-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

http://www.gsyq.cn/news/188969.html

相关文章:

  • 2026年数据可视化工具首选!万维易源(DataGear)使用指南
  • 拥抱大数据领域数据服务,迎接数字时代挑战
  • 英语_错题集_26-01
  • 12月阅读笔记(2)
  • 2025专科生必看!10个AI论文工具测评,写毕业论文不再愁
  • Quartus Prime 新手完全使用指南
  • 此网站返回了异常的加密凭据 ERR_CERT_INVALID 解决办法
  • VMware NSX 4.2 - 主机传输节点配置
  • 前端可视化效率翻倍!阿里巴巴图库的正确打开方式
  • 基于springboot的医院资源管理系统(11635)
  • 2025最新!继续教育必备8个AI论文工具深度测评
  • NVIDIA AI Associate
  • 电商海报复刻效率翻倍!AI工具一键复刻爆款,还能实现元素裂变
  • 学长亲荐8个AI论文工具,助研一搞定开题报告与格式规范!
  • 【直流微电网保护】【本地松弛母线、光伏系统、电池和直流负载】【光伏系统使用标准的光伏模型+升压变换器】【电池使用标准的锂离子电池模型+双有源桥变换器】附Simulink仿真
  • 探索 10bit 100MS/s 流水线Pipelined ADC电路:0.18um工艺下的宝藏学习资源
  • AI驱动的企业创新项目管理:敏捷方法与AI的结合
  • AI浪潮下的大模型学习宝典:程序员必看,高薪算法岗转型指南,建议收藏!
  • 【必读收藏】从写代码到“调教“AI:我的转型之路与开发方式革命
  • 微信小程序在page页面中watch监听变量变化
  • DeepSeek总结的算法 X 与舞蹈链文章
  • uboot logo显示问题
  • 数控电源仿真设计探索
  • session、cookie、token的核心区别
  • 【小贷行业】2027年生死劫:12%利率红线下的血色黎明与AI破局之路
  • 换能器件阻抗分析仪
  • openGauss在教育领域的AI实践:基于Java JDBC的学生成绩预测系统 - 详解
  • 力扣406 根据身高重建队列 java实现
  • 西门子时间计数器
  • 一个 Bug,把 MIT 工程师从谷歌逼醒