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

ARM开发,stm32mp157a-A7核PWM实验(驱动蜂鸣器,风扇,马达工作)

1.分析框图;

 

2.比较捕获寄存器(产生PWM方波);

工作原理:

1、系统提供一个时钟源209MHZ,需要通过分频器进行分频,设置分频器值为209分频;

2、当定时器启动之后,自动重载计数器中的值,会自动加载到递减计数器中;

3、时钟信号驱动递减计数器进行工作;

4、每来一个时钟周期,递减计数器中的值,进行减1操作;

5、当递减计数器中的值,和捕获比较寄存器中的值相等之后,电平发生翻转;

6、递减计数器中的值减到0之后;

7、自动重载计数器中的值,会再次自动加载到递减计数器中,开启下个时钟周期;

 

3.代码;

---pwm.h头文件---
#ifndef __PWM_H__
#define __PWM_H__#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_tim.h"//PB6  TIM4_CH1  蜂鸣器初始化
void hal_beep_init();//PF6  TIM16_CH1  马达初始化
void hal_monitor_init();//PE9  TIM1_CH1  风扇初始化
void hal_fan_init();#endif
---pwm.c函数实现---
#include "pwm.h"//PB6  TIM4_CH1 蜂鸣器
void hal_beep_init()
{//RCC章节初始化//1.使能GPIOB组控制器RCC->MP_AHB4ENSETR |= (0x1 << 1);//2.使能TIM4组控制器RCC->MP_APB1ENSETR |= (0x1 << 2);//GPIO章节初始化//1.PB6引脚复用功能 [13:12]=10GPIOB->MODER &= (~(0x3 << 12));GPIOB->MODER |= (0x2 << 12);//2.复用功能为TIM4_CH1功能 [27:14]=0010GPIOB->AFRL &= (~(0xF << 24));GPIOB->AFRL |= (0x2 << 24);//TIM4章节初始化//1.系统时钟源为209MHZ,进行分频209-1TIM4->PSC = 209 -1;//产生PWM方波频率1000HZ//2.自动重载计数器 1000TIM4->ARR = 1000;//3.捕获寄存器值TIM4->CCR1 = 300;	//4.CCER 设置比较寄存器默认输出极性TIM4->CCER &= (~(0x1 << 1));   //输出极性高电平TIM4->CCER &= (~(0x1 << 3));   TIM4->CCER |= (0x1 << 0);   //比较寄存器使能//5.CCMR1 配置比较捕获寄存器TIM4->CCMR1 &= (~(0x1 << 16));   //PWM模式TIM4->CCMR1 &= (~(0x7 << 4));   TIM4->CCMR1 |= (0x6 << 4);TIM4->CCMR1 |= (0x1 << 3);   //比较寄存器预加载使能TIM4->CCMR1 &= (~(0x3 << 0));   //通道1输出//6.CR1 初始化寄存器相关操作TIM4->CR1 |= (0x1 << 7);    //自动重载预加载使能TIM4->CR1 &= (~(0x3 << 5));   //设置边沿对齐模式TIM4->CR1 |= (0x1 << 4);   //设置递减计数方式TIM4->CR1 |= 0x1;   //设置计数器使能}//PF6  TIM16_CH1 马达
void hal_monitor_init()
{//RCC章节初始化//1.使能GPIOF组控制器RCC->MP_AHB4ENSETR |= (0x1 << 5);//2.使能TIM16组控制器RCC->MP_APB2ENSETR |= (0x1 << 3);//GPIO章节初始化//1.PF6引脚复用功能 [13:12]=10GPIOF->MODER &= (~(0x3 << 12));GPIOF->MODER |= (0x2 << 12);//2.复用功能为TIM16_CH1功能 [27:24]=0001GPIOF->AFRL &= (~(0xF << 24));GPIOF->AFRL |= (0x1 << 24);//TIM16章节初始化//1.系统时钟源为209MHZ,进行分频209-1TIM16->PSC = 209 -1;//产生PWM方波频率1000HZ//2.自动重载计数器 1000TIM16->ARR = 1000;//3.捕获寄存器值TIM16->CCR1 = 300;	//4.CCER 设置比较寄存器默认输出极性TIM16->CCER &= (~(0x1 << 1));   //输出极性高电平TIM16->CCER &= (~(0x1 << 3));   TIM16->CCER |= (0x1 << 0);   //比较寄存器使能TIM16->CR1 &= (~(0x3 << 5));   //设置边沿对齐模式TIM16->CR1 |= (0x1 << 4);   //设置递减计数方式//5.CCMR1 配置比较捕获寄存器TIM16->CCMR1 &= (~(0x1 << 16));   //PWM模式TIM16->CCMR1 &= (~(0x7 << 4));   TIM16->CCMR1 |= (0x6 << 4);TIM16->CCMR1 |= (0x1 << 3);   //比较寄存器预加载使能TIM16->CCMR1 &= (~(0x3 << 0));   //通道1输出//6.CR1 只有默认递增计数TIM16->CR1 |= (0x1 << 7);    //自动重载预加载使能TIM16->CR1 |= 0x1;   //设置计数器使能//7.设置TIM16_CH1 通道主输出使能TIM16->BDTR |= (0x1 << 15);}//PE9  TIM1_CH1 风扇
void hal_fan_init()
{//RCC章节初始化//1.使能GPIOE组控制器RCC->MP_AHB4ENSETR |= (0x1 << 4);//2.使能TIM4组控制器RCC->MP_APB2ENSETR |= (0x1 << 0);//GPIO章节初始化//1.PE9引脚复用功能 [19:18]=10GPIOE->MODER &= (~(0x3 << 18));GPIOE->MODER |= (0x2 << 18);//2.复用功能为TIM1_CH1功能 AFRH[7:4]=0001GPIOE->AFRH &= (~(0xF << 4));GPIOE->AFRH |= (0x1 << 4);//TIM1章节初始化//1.系统时钟源为209MHZ,进行分频209-1TIM1->PSC = 209 -1;//产生PWM方波频率1000HZ//2.自动重载计数器 1000TIM1->ARR = 500;//3.捕获寄存器值TIM1->CCR1 = 300;	//4.CCER 设置比较寄存器默认输出极性TIM1->CCER &= (~(0x1 << 1));   //输出极性高电平TIM1->CCER &= (~(0x1 << 3));   TIM1->CCER |= (0x1 << 0);   //比较寄存器使能//5.CCMR1 配置比较捕获寄存器TIM1->CCMR1 &= (~(0x1 << 16));   //PWM模式TIM1->CCMR1 &= (~(0x7 << 4));   TIM1->CCMR1 |= (0x6 << 4);TIM1->CCMR1 |= (0x1 << 3);   //比较寄存器预加载使能TIM1->CCMR1 &= (~(0x3 << 0));   //通道1输出//6.CR1 TIM1->CR1 |= (0x1 << 7);    //自动重载预加载使能TIM1->CR1 &= (~(0x3 << 5));   //设置边沿对齐模式TIM1->CR1 |= (0x1 << 4);   //设置递减计数方式TIM1->CR1 |= 0x1;   //设置计数器使能//7设置TIM1_CH1 通道主输出使能TIM1->BDTR |= (0x1 << 15);
}
---main.c测试文件---
#include "pwm.h"extern void printf(const char *fmt, ...);void delay_ms(int ms){int i,j;for(i = 0; i < ms;i++)for (j = 0; j < 1800; j++);
}int main()
{while(1){hal_beep_init();hal_monitor_init();hal_fan_init();}return 0;}

相关文章:

ARM开发,stm32mp157a-A7核PWM实验(驱动蜂鸣器,风扇,马达工作)

1.分析框图&#xff1b; 2.比较捕获寄存器&#xff08;产生PWM方波&#xff09;&#xff1b; 工作原理&#xff1a; 1、系统提供一个时钟源209MHZ&#xff0c;需要通过分频器进行分频&#xff0c;设置分频器值为209分频&#xff1b; 2、当定时器启动之后&#xff0c;自动重载…...

群狼调研(长沙眼镜店神秘顾客)|消费者需求研究方案

本文由群狼调研(长沙品牌调研)出品&#xff0c;欢迎转载&#xff0c;请注明出处。消费者需求研究方案是在开展研究之前制定的计划&#xff0c;用于指导研究的设计、实施和分析。以下是一个可能的消费者需求研究方案的大致框架&#xff1a; 1. 研究目标和问题&#xff1a; • …...

电脑入门:宽带路由器常见故障排除技巧

宽带路由器在企业网络中的应用是相当广泛的,在运行的过程中出现故障是在所难免的,虽然故障现象多种多样,引起故障发生的原因也不尽相同,但从大体上可以把这些故障分为硬件故障和软件故障,具体来说就是一些网络连接性问题、配置文件选项问题以及网络协议问题等。 由于路由器…...

基于云原生网关的流量防护实践

作者&#xff1a;涂鸦 背景 在分布式系统架构中&#xff0c;每个请求都会经过很多层处理&#xff0c;比如从入口网关再到 Web Server 再到服务之间的调用&#xff0c;再到服务访问缓存或 DB 等存储。在下图流量防护体系中&#xff0c;我们通常遵循流量漏斗原则进行流量防护。…...

开源与云计算:新的合作模式

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

前端需要理解的跨平台知识

混合开发是指使用多种开发模开发App的一种开发模式&#xff0c;涉及到两大类技术&#xff1a;原生 Native、Web H5。原生 Native 主要指 iOS&#xff08;Objective C&#xff09;、Android&#xff08;Java&#xff09;&#xff0c;原生开发效率较低&#xff0c;开发完成需要重…...

《基于 Vue 组件库 的 Webpack5 配置》3.将 CSS 提取到单独的文件

使用 webpack 插件 mini-css-extract-plugin 需要额外安装 npm i mini-css-extract-pluginlatest -D&#xff1b; 同时打包 js 和 css 文件时&#xff0c;可参考 entry 高级用法&#xff1b; package.json 的配置如下 const { VueLoaderPlugin } require(vue-loader); // 可…...

2023CCF图形学启明星计划夏令营感想记录

这篇就是纯日记了&#xff0c;想记录一下参加这个夏令营的感想&#xff0c;中间的一些过程&#xff0c;毕竟这对我来说算是一段难忘的经历。 一、了解到的渠道 我个人是比较喜欢图形渲染的&#xff0c;之前也学过GAMES的课程&#xff0c;然后偶然的一天&#xff0c;GAMES101里…...

如何解决“缺失msvcp110.dll”错误,msvcp110.dll丢失要怎样才能修复

今天&#xff0c;我将为大家分享关于电脑提示msvcp110.dll丢失的3种修复方法。希望这些方法能帮助到正在遇到这个问题的朋友们。 首先&#xff0c;我们来了解一下msvcp110.dll文件的作用。msvcp110.dll是Microsoft Visual C 2010 Redistributable Package的一部分&#xff0c;…...

激活函数总结(二十):激活函数补充(SQNL、PLU)

激活函数总结&#xff08;二十&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Square nonlinearity (SQNL)激活函数2.2 Piecewise Linear Unit (PLU)激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PR…...

Docker【部署 04】Docker Compose下载安装及实例Milvus Docker compose(CPU)使用说明分享

Docker Compose 下载安装使用说明 1.Compose说明1.1 Overview of installing Docker Compose1.2 Installation scenarios1.2.1 Scenario one: Install Docker Desktop1.2.2 Scenario two: Install the Compose plugin1.2.3 Scenario three: Install the Compose standalone 2.C…...

23种设计模式-7种结构模式

结构型模式简述 把类或对象结合在一起形成一个更大的结构。 装饰器模式&#xff1a;动态的给对象添加新的功能。 代理模式&#xff1a;为其它对象提供一个代理以便控制这个对象的访问。 桥接模式&#xff1a;将抽象部分和它的实现部分分离&#xff0c;使它们都可以独立的变…...

大数据Flink(六十七):SQL Table 简介及运行环境

文章目录 SQL & Table 简介及运行环境 一、​​​​​​​​​​​​​​简介 二、案例...

WPF使用依赖注入

现在依赖注入在.Net里面已经普及&#xff0c;自己常写一些简单的demo倒是无所谓&#xff0c;但偶尔写一点正式的工程&#xff0c;也免不了要使用一下&#xff0c;于是总结了一下在WPF里面使用依赖注入。 在写简单Demo时候&#xff0c;通常是在MainWindow的构造函数里面直接做初…...

玩转科技|了解AI平台桌面客户端—ChatBox

目录 前言 特性 ​编辑 为什么需要 ChatBox&#xff1f; ChatGPT Plus 平替&#xff1f; 下载 支持系统 功能图 使用教程 ​感受 展示 前言 今天小编又来了&#xff0c;推荐给大家一款开源的OpenAI API桌面客户端ChatBox&#xff0c;它支持 Windows、Mac 和 Linux。…...

visual studio 2022.NET Core 3.1 未显示在目标框架下拉列表中

问题描述 在Visual Studio 2022我已经安装了 .NET core 3.1 并验证可以运行 .NET core 3.1 应用程序&#xff0c;但当创建一个新项目时&#xff0c;目标框架的下拉列表只允许 .NET 6.0和7.0。而我在之前用的 Visual Studio 2019&#xff0c;可以正确地添加 .NET 核心项目。 …...

人工智能项目集合推荐(数据集 模型训练 C++和Android部署)

人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …...

C# 服务HTTPS 对 请求被中止: 未能创建 SSL/TLS 安全通道报错

1.如果windows支持HTTPS的TLS协议&#xff0c;则可以直接跳过 &#xff08;Tls12&#xff09; [WebMethod(Description "获取HttpsPost加密服务.")] public string HTTPSPOST(String input,String sUrl) { Log.Add("ReceiveNotice", &qu…...

二级MySQL(七)——表格数据修改

1、修改表格中部分数据 将表格某一行的数据修改&#xff0c;这里用的UPDATE语句&#xff1a; UPDATE tb_student SET studentName 黄涛,native湖北,nation汉 WHERE studentNo 2014210103; 结果&#xff1a; 2、修改表格某一列全部数据 比如性别全部设置为‘女’ UPDATE…...

【日常积累】Linux下sftp搭建

概述 SFTP是Secure File Transfer Protocol的缩写&#xff0c;是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。 SFTP是SSH的一部分&#xff0c;是一种传输档案至Blogger伺服器的安全方式。它本身没有单独的守护进程&#xff0c;必须使用s…...

【深入浅出C#】章节 9: C#高级主题:多线程编程和并发处理

多线程编程和并发处理的重要性和背景 在计算机科学领域&#xff0c;多线程编程和并发处理是一种关键技术&#xff0c;旨在充分利用现代计算机系统中的多核处理器和多任务能力。随着计算机硬件的发展&#xff0c;单一的中央处理单元&#xff08;CPU&#xff09;已经不再是主流&a…...

Windows Server服务器安全加固基线配置

一、账户管理、认证授权 一、账户 1、管理缺省账户 安全基线项说明&#xff1a;对于管理员账号&#xff0c;要求更改缺省账户名称&#xff1b;禁用Guest(来宾)账户。 操作步骤&#xff1a;进入控制面板-->管理工具-->计算机管理&#xff0c;在系统工具-->本地用户和组…...

基于NXP i.MX 6ULL核心板的物联网模块开发案例(4)

目录 5 4G模块测试 5.1 网络功能测试 5.2 短信功能测试 5.3 通话功能测试 5.4 GPS定位功能测试 5.5 程序编译 前言 本文主要介绍基于创龙科技TLIMX6U-EVM评估板的物联网模块开发案例,适用开发环境: Windows开发环境:Windows 7 64bit、Windows 10 64bit 虚拟机:VMware15.…...

英语——强调

强调句是英语中常用的一个重点句型,其基本结构是:It+be+被强调部分+that+句子其余部分。 第一节 强调句的基本用法 一、被强调的句子成分 在强调句型中,能够被强调的句子成分通常为主语、宾语、状语等,不能用来强调谓语动词、表语、补语、让步状语、条件状语等。当被强调…...

全流程R语言Meta分析核心技术教程

详情点击链接&#xff1a;全流程R语言Meta分析核心技术教程 一&#xff0c;Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析&#xff1f; 2)Meta分析的选题策略 3)精确检索策略&#xff0c;如何检索全、检索准 4)文献的管理与清洗&#xff0c;如何制定文…...

【C++精华铺】9.STL string

目录 1. string类的优势 2. string类的常用接口 2.1 常用构造 1. 空串构造&#xff1a;string(); 2. C串构造&#xff1a;string(const char* s); 3. 拷贝构造&#xff1a;string(const string& str); 4. 字符填充构造&#xff1a;string(size_t n, char c); 5. 迭代…...

【PACS】医学影像管理系统源码带三维重建后处理技术

PACS系统&#xff0c;意为影像归档和通信系统。它是应用在医院影像科室的系统&#xff0c;主要的任务就是把日常产生的各种医学影像&#xff08;包括核磁&#xff0c;CT&#xff0c;超声&#xff0c;各种X光机&#xff0c;各种红外仪、显微仪等设备产生的图像&#xff09;通过各…...

从0开始学go 第一天

今天是开始学go的第x天&#xff0c;前些日子看了看语言&#xff0c;今天找一个web开发来跟着学&#xff0c;记录一下遇到的问题&#xff0c;方便以后复习查阅。 视频看的是https://www.bilibili.com/video/BV1gJ411p7xC?p3&vd_sourceab5bdbd04f4142027c66d604d5285204 视…...

Spring Cloud Nacos详解

目录 1、Spring Cloud Nacos详细介绍2、Spring Cloud Nacos具体案列 Spring Cloud Nacos 是一个由阿里巴巴集团开发的开源分布式系统服务发现、配置管理和服务管理的平台。Nacos 支持多种服务发现方式&#xff0c;包括 DNS 方式、HTTP 和 RPC 方式&#xff0c;同时提供了灵活的…...

2023谷歌开发者大会直播大纲「初稿」

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…...

网站建设实训报告ppt/市场营销计划

还是那句很欠揍的话&#xff0c;没啥难度&#xff0c;直接上代码。 // // ViewController.m // Demo—闪光灯 // // Created by yyt on 16/4/21. // Copyright © 2016年 yyt. All rights reserved. // #import "ViewController.h" #import <AVFoundation…...

b2b网站整合营销/长春seo排名

资源 完全参照状态模式|菜鸟教程但不包括IOS代码 介绍 意图&#xff1a; 允许对象在内部状态发生改变时改变它的行为&#xff0c;对象看起来好像修改了它的类。 主要解决&#xff1a; 对象的行为依赖于它的状态&#xff08;属性&#xff09;&#xff0c;并且可以根据它的状态…...

wordpress 在线浏览/今天的新闻最新消息

剑指offer-打印从1到最大的n位数C实现原题链接 #include <iostream> #include <cmath> #include <vector>using namespace std;class Solution { public:vector<int> printNumbers(int n) {// 由题意可知&#xff0c;输入的最大数为10的n次方for (in…...

禅城网站建设企业/淘宝seo

学号&#xff1a;2017XXXX7217&#xff1b; 我是老表弟&#xff08;卢冠宇&#xff09;&#xff1b; 我的爱好随心而动&#xff1b; 我的码云个人主页是https://gitee.com/The_Old_Cousin/events&#xff1b; 我的第一个项目地址是https://gitee.com/The_Old_Cousin/new_wareho…...

wordpress使用百度统计/推广赚钱项目

对于一个数组&#xff08;集合&#xff09;找出其所有子集&#xff0c;也就是用另一个数组打标记的过程&#xff0c;用0和1记录需要输出的数&#xff0c;而这个过程也就是枚举每一种情况&#xff08;如&#xff1a;1000、1100、1110…输出的数也就是1对应的数&#xff09;。由于…...

浙江网站建设哪家好/登封搜索引擎优化

是台湾一个培训机构的、介绍的比较详细&#xff0c;发过来共享。/Files/AlphaWu/MasterPage.pdf 转载于:https://www.cnblogs.com/AlphaWu/archive/2006/06/04/417053.html...