上位机图像处理和嵌入式模块部署(h750 mcu中的pwm控制)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        所谓的pwm,其实就是方波。我们都知道,对于一个电机来说,如果插上正负极的话,那么电机就会全速运转。但是,有的时候我们希望对速度进行控制,那么这个时候pwm就派上用场了。pwm的基本原理比较简单,它就是按照频率,把信号拆分成一段一段的输出。在每一段信号当中,有的时候输出为1,有的时候输出为0,如果1的比例越大,那说明现在上位机希望进行加速处理;反之1的比例越小,就说明这个时候希望的操作,是对电机进行减速处理。实际操作中,一般mcu和电机之间有一个驱动器,我们通过pwm控制驱动器,就可以实现对电机的控制了。

        因为没有电机,所以这次我们希望用pwm实现一个呼吸灯的效果。所谓的呼吸灯,就是一开始led越来越亮,接着就是越来越暗,周而复始。因为手边h750开发板上led灯损坏,这一次就用了stm32f103c8t6做了代替测试,基本原理是一样的。

1、硬件搭建

        之前的led连接的是pc13,我们这里是利用tim对pa0进行控制的。所以,我们所要做的就是把pa0和pc13短接在一起就好了。

2、初始化pwm

        目前stm32系列的mcu都是通过tim定时器来实现pwm输出的,pwm从哪个gpio输出,这个也是要通过芯片手册提前设计好的。大部分代码内容都是差不多的,大家可以把重点放在pin脚、周期设定、分频等重要参数的设置上。

void PWM_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 200 - 1;		//ARRTIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;		//PSCTIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(&TIM_OCInitStructure);TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;TIM_OCInitStructure.TIM_Pulse = 0;		//CCRTIM_OC1Init(TIM2, &TIM_OCInitStructure);TIM_Cmd(TIM2, ENABLE);
}

3、设置空占比

        空占比,也就是有效信号占单个周期信号的比例,这个数值非常重要。大家使用的时候需要注意下。

void PWM_SetCompare1(uint16_t Compare)
{TIM_SetCompare1(TIM2, Compare);
}

4、实现呼吸灯效果

        正如之前所示,呼吸灯就是一个pwm空占比从低到高、再从高到底的一个过程。做好了这一点,基本上就实现了呼吸灯的效果。

	while (1){for (i = 0; i <= 200; i++){PWM_SetCompare1(i);Delay_ms(10);}for (i = 0; i <= 200; i++){PWM_SetCompare1(200 - i);Delay_ms(10);}}

5、TIM定时器的另有一个用法-编码器

        在stm32 mcu上面一般有两种定时器。一种是systick,一般用作系统中断使用,类似于给rtos做1ms中断使用;还有一种就是tim。tim有普通定时器和高精度定时器。不过用的比较多的场景,就是用tim定时器实现pwm输出,以及实现电机编码器的读取。

        有了电机编码器相当于就有了一个反馈信号,我们通过这个编码器就可以算出电机的当前速度。借助于这个反馈量,就可以提示我们下一步是提高pwm空占比,还是降低pwm空占比,这样才能达到最终的控制速度。

6、测试和验证

        因为暂时手上没有示波器,所以只能通过led灯的明暗程度,来粗略判断下当前pwm是不是真的有效果。这一点和之前ad/da测试有点像,当时也是只能定性地去分析驱动设置有没有发生作用。如果要真正地看输出信号是否准确,归根到底还是要通过示波器等精密一点的设备去进行连接和判断。

注:

        实验过程中发生一个有趣的现象,那就是用st-link v2烧入低功耗程序之后,st-link v2就没有办法烧录了,一直提示“internal command error”。但是长按reset又可以识别mcu,有点奇怪。直到boot和3.3v用短接帽短接后,重新st-link v2连接才能烧入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/29948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode (top100)盛最多水的容器

题目&#xff1a; 题解&#xff1a; 第一种可行的方案&#xff1a; 设置左指针指向第一条线&#xff0c;设置右指针指向最后一条线。每次向中间移动两条线中最短的一条&#xff0c;计算移动过程中最大接水量。 本题可以看出影响接水量的有两个因素&#xff0c;两条线的距离&…

PHP反序列化

PHP反序列化 什么是反序列化操作&#xff1f; 类型转换 - PHP & JavaEE & Python&#xff08;见图&#xff09; 序列化&#xff1a;对象转换为数组或字符串等格式 反序列化&#xff1a;将数组或字符串等格式转换成对象 serialize() //将对象转换成一个字符串 un…

配置小程序

小程序配置 1.全局配置 小程序根目录下的 app.json 文件用来对微信小程序进行全局配置&#xff0c;决定页面文件的路径、窗口表现、设置网络超时时间、设置多 tab 等。 完整配置项说明请参考小程序全局配置 以下是一个包含了部分常用配置选项的 app.json &#xff1a; {&q…

聚观早报 | 小米15配置规格曝光;比亚迪车险开售

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 6月19日消息 小米15配置规格曝光 比亚迪车险开售 真我GT6细节曝光 极星汽车加速全球扩张 Model 3高性能版开启交…

windows anaconda 安装 Labelme

安装 # 创建环境 conda create -n labelme python3.6 #激活环境 conda activate labelme # 安装依赖 conda install pyqt conda install pillow # 安装labelme conda install labelme3.16.2 # 启动labelme labelme右键选择标注类型&#xff0c;从上到下为多边形&#xff08;常…

计算机的五大功能部件应用及特点

目录 计算机的五大功能部件 1.现代计算机的结构 2.主存储器 ​​​​​​​ 3.运算器 4.控制器 5.各部件的特点 5.1主存特点 5.2外存特点 5.3运算器特点 5.4控制器特点 计算机的五大功能部件 1.现代计算机的结构 一般将运算器和控制器集成到同一个芯片上&#xff…

微前端乾坤方案

微前端乾坤方案 了解乾坤 官方文档 介绍 qiankun 是一个基于 single-spa 的微前端实现库&#xff0c;旨在帮助大家能更简单、无痛的构建一个生产可用微前端架构系统。 qiankun 的核心设计理念 &#x1f944; 简单 由于主应用微应用都能做到技术栈无关&#xff0c;qiankun 对…

CCS条形光源——HLDL3系列,长距离和宽范围照射应用的不二之选

机器视觉系统中&#xff0c;光源起着重要作用&#xff0c;不同类型的光源应用也不同&#xff0c;选择合适的光源成像效果非常明显。今天我们一起来看看CCS光源——工业用条形光源HLDL3系列。 高亮LED光源HLDL3系列 适用于长距离和宽范围照射的条形光源。 适用于各种检测案例&a…

AlmaLinux 更换CN镜像地址

官方镜像列表 官方列表&#xff1a;https://mirrors.almalinux.org/CN 开头的站点&#xff0c;不同区域查询即可 一键更改镜像地址脚本 以下是更改从默认更改到阿里云地址 cat <<EOF>>/AlmaLinux_Update_repo.sh #!/bin/bash # -*- coding: utf-8 -*- # Author:…

Python8 使用结巴(jieba)分词并展示词云

Python的结巴&#xff08;jieba&#xff09;库是一个中文分词工具&#xff0c;主要用于对中文文本进行分词处理。它可以将输入的中文文本切分成一个个独立的词语&#xff0c;为后续的文本处理、分析、挖掘等任务提供基础支持。结巴库具有以下功能和特点&#xff1a; 中文分词&a…

LVGL开发教程-Label文本

系列文章目录 知不足而奋进 望远山而前行 目录 系列文章目录 文章目录 前言 ​编辑 1. 文本显示 2. 使用字体 总结 前言 在嵌入式系统开发中&#xff0c;文本显示是一项基本而重要的功能。使用 LittlevGL&#xff08;LVGL&#xff09;库&#xff0c;我们可以轻松地创建…

Folx Mac版软件下载-Folx 2024最新版-下载工具附加详细安装步骤

​根据大数据调查表明从网络下载视频&#xff1a;用Folx从网页上下载视频&#xff0c;能够设置下载视频的格式&#xff0c;你也能够下载年龄限制和私人视频&#xff0c;当你不需要视频&#xff0c;只想要一个音轨的时候&#xff0c;Folx是非常有用的!这个互联网下载器所有的视频…

java智慧工地系统源码 智慧工地标准之一:环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能?

java智慧工地系统源码 智慧工地标准之一&#xff1a;环境监测 告别灰头土脸、智慧工地环境监测系统都包括哪些功能&#xff1f; 智慧工地环境监测系统是一套集成了物联网、大数据和云计算技术的系统&#xff0c;主要用于实时监测和管理建筑工地的环境状况。以下是该系统的一些核…

VS2022打开.netcore2.2 问题解决

1.vs2022运行时一直提示异常 2.解决方法&#xff0c;双击当前的项目修改xxxx.csproj文件 把当前的版本修改为2.2.0即可重新编译运行

山东大学面向对象技术——设计原则、工厂模式、单例模式

目录 前言 设计模式和原则作用 面向对象的设计原则 开闭原则OCP: Open-Closed Principle 题目举例 里氏代换原则LSP: Liskov Subtitution 依赖倒置原则DIP: Dependency Inversion Principle 接口隔离原则ISP: Interface Segregation Principle 组合优先原则CRP: Compo…

【AI学习】LLaMA 系列模型的进化(一)

一直对LLaMA 名下的各个模型关系搞不清楚&#xff0c;什么羊驼、考拉的&#xff0c;不知所以。幸好看到两篇综述&#xff0c;有个大致了解&#xff0c;以及SEBASTIAN RASCHKA对LLaMa 3的介绍。做一个记录。 一、文章《Large Language Models: A Survey》中对LLaMa的介绍 论文…

【微服务网关——负载均衡】

1. 四大负载均衡策略 随机负载 随机挑选目标服务器IP 轮询负载 ABC三台服务器&#xff0c;ABCABC依次轮询 加权负载 给目标设置访问权重&#xff0c;按照权重轮询 一致性hash负载 请求固定URL访问指定IP 2.随机负载均衡 可以通过random函数来随机选择一个ip 2.1 代码实现 …

陶建辉入选 2023 年度“中国物联网行业卓越人物榜”

在这个技术飞速发展的时代&#xff0c;物联网行业作为推动社会进步的重要力量&#xff0c;正在不断地演化和革新。近日&#xff0c;中国智联网生态大会暨“2023 物联之星”年度榜单颁奖典礼在上海浦东举行。现场公布了拥有物联网行业奥斯卡奖之称的 ——“物联之星 2023 中国物…

「51媒体」上海电视台媒体邀约专访怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电视台专访通常会对一些热门话题&#xff0c;行业热点&#xff0c;或者新闻焦点&#xff0c;邀请嘉宾进行访谈。企业如果想要在电视台进行专访&#xff0c;通常要有合适的时机和选题。 下…

【面试干货】Java方法重写的规则

【面试干货】Java方法重写的规则 1、Java方法重写的规则2、示例代码3、总结 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在Java中&#xff0c;方法重写&#xff08;Overriding&#xff09;是面向对象编程中的一个核心概念&#xff0c;它…