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.分析框图; 2.比较捕获寄存器(产生PWM方波); 工作原理: 1、系统提供一个时钟源209MHZ,需要通过分频器进行分频,设置分频器值为209分频; 2、当定时器启动之后,自动重载…...
群狼调研(长沙眼镜店神秘顾客)|消费者需求研究方案
本文由群狼调研(长沙品牌调研)出品,欢迎转载,请注明出处。消费者需求研究方案是在开展研究之前制定的计划,用于指导研究的设计、实施和分析。以下是一个可能的消费者需求研究方案的大致框架: 1. 研究目标和问题: • …...
电脑入门:宽带路由器常见故障排除技巧
宽带路由器在企业网络中的应用是相当广泛的,在运行的过程中出现故障是在所难免的,虽然故障现象多种多样,引起故障发生的原因也不尽相同,但从大体上可以把这些故障分为硬件故障和软件故障,具体来说就是一些网络连接性问题、配置文件选项问题以及网络协议问题等。 由于路由器…...
基于云原生网关的流量防护实践
作者:涂鸦 背景 在分布式系统架构中,每个请求都会经过很多层处理,比如从入口网关再到 Web Server 再到服务之间的调用,再到服务访问缓存或 DB 等存储。在下图流量防护体系中,我们通常遵循流量漏斗原则进行流量防护。…...
开源与云计算:新的合作模式
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
前端需要理解的跨平台知识
混合开发是指使用多种开发模开发App的一种开发模式,涉及到两大类技术:原生 Native、Web H5。原生 Native 主要指 iOS(Objective C)、Android(Java),原生开发效率较低,开发完成需要重…...
《基于 Vue 组件库 的 Webpack5 配置》3.将 CSS 提取到单独的文件
使用 webpack 插件 mini-css-extract-plugin 需要额外安装 npm i mini-css-extract-pluginlatest -D; 同时打包 js 和 css 文件时,可参考 entry 高级用法; package.json 的配置如下 const { VueLoaderPlugin } require(vue-loader); // 可…...
2023CCF图形学启明星计划夏令营感想记录
这篇就是纯日记了,想记录一下参加这个夏令营的感想,中间的一些过程,毕竟这对我来说算是一段难忘的经历。 一、了解到的渠道 我个人是比较喜欢图形渲染的,之前也学过GAMES的课程,然后偶然的一天,GAMES101里…...
如何解决“缺失msvcp110.dll”错误,msvcp110.dll丢失要怎样才能修复
今天,我将为大家分享关于电脑提示msvcp110.dll丢失的3种修复方法。希望这些方法能帮助到正在遇到这个问题的朋友们。 首先,我们来了解一下msvcp110.dll文件的作用。msvcp110.dll是Microsoft Visual C 2010 Redistributable Package的一部分,…...
激活函数总结(二十):激活函数补充(SQNL、PLU)
激活函数总结(二十):激活函数补充 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种结构模式
结构型模式简述 把类或对象结合在一起形成一个更大的结构。 装饰器模式:动态的给对象添加新的功能。 代理模式:为其它对象提供一个代理以便控制这个对象的访问。 桥接模式:将抽象部分和它的实现部分分离,使它们都可以独立的变…...
大数据Flink(六十七):SQL Table 简介及运行环境
文章目录 SQL & Table 简介及运行环境 一、简介 二、案例...
WPF使用依赖注入
现在依赖注入在.Net里面已经普及,自己常写一些简单的demo倒是无所谓,但偶尔写一点正式的工程,也免不了要使用一下,于是总结了一下在WPF里面使用依赖注入。 在写简单Demo时候,通常是在MainWindow的构造函数里面直接做初…...
玩转科技|了解AI平台桌面客户端—ChatBox
目录 前言 特性 编辑 为什么需要 ChatBox? ChatGPT Plus 平替? 下载 支持系统 功能图 使用教程 感受 展示 前言 今天小编又来了,推荐给大家一款开源的OpenAI API桌面客户端ChatBox,它支持 Windows、Mac 和 Linux。…...
visual studio 2022.NET Core 3.1 未显示在目标框架下拉列表中
问题描述 在Visual Studio 2022我已经安装了 .NET core 3.1 并验证可以运行 .NET core 3.1 应用程序,但当创建一个新项目时,目标框架的下拉列表只允许 .NET 6.0和7.0。而我在之前用的 Visual Studio 2019,可以正确地添加 .NET 核心项目。 …...
人工智能项目集合推荐(数据集 模型训练 C++和Android部署)
人工智能项目集合推荐(数据集 模型训练 C和Android部署) 目录 人工智能项目集合推荐(数据集 模型训练 C和Android部署) 1.三维重建项目集合 ★双目三维重建 ★结构光三维重建 2.AI CV项目集合 ★人脸检测和人体检测 ★人体姿态估计(人体关键点检测) ★头部朝向估计 …...
C# 服务HTTPS 对 请求被中止: 未能创建 SSL/TLS 安全通道报错
1.如果windows支持HTTPS的TLS协议,则可以直接跳过 (Tls12) [WebMethod(Description "获取HttpsPost加密服务.")] public string HTTPSPOST(String input,String sUrl) { Log.Add("ReceiveNotice", &qu…...
二级MySQL(七)——表格数据修改
1、修改表格中部分数据 将表格某一行的数据修改,这里用的UPDATE语句: UPDATE tb_student SET studentName 黄涛,native湖北,nation汉 WHERE studentNo 2014210103; 结果: 2、修改表格某一列全部数据 比如性别全部设置为‘女’ UPDATE…...
【日常积累】Linux下sftp搭建
概述 SFTP是Secure File Transfer Protocol的缩写,是安全文件传送协议。可以为传输文件提供一种安全的加密方法。跟ftp几乎语法功能一样。 SFTP是SSH的一部分,是一种传输档案至Blogger伺服器的安全方式。它本身没有单独的守护进程,必须使用s…...
【深入浅出C#】章节 9: C#高级主题:多线程编程和并发处理
多线程编程和并发处理的重要性和背景 在计算机科学领域,多线程编程和并发处理是一种关键技术,旨在充分利用现代计算机系统中的多核处理器和多任务能力。随着计算机硬件的发展,单一的中央处理单元(CPU)已经不再是主流&a…...
Windows Server服务器安全加固基线配置
一、账户管理、认证授权 一、账户 1、管理缺省账户 安全基线项说明:对于管理员账号,要求更改缺省账户名称;禁用Guest(来宾)账户。 操作步骤:进入控制面板-->管理工具-->计算机管理,在系统工具-->本地用户和组…...
基于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分析核心技术教程
详情点击链接:全流程R语言Meta分析核心技术教程 一,Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析? 2)Meta分析的选题策略 3)精确检索策略,如何检索全、检索准 4)文献的管理与清洗,如何制定文…...
【C++精华铺】9.STL string
目录 1. string类的优势 2. string类的常用接口 2.1 常用构造 1. 空串构造:string(); 2. C串构造:string(const char* s); 3. 拷贝构造:string(const string& str); 4. 字符填充构造:string(size_t n, char c); 5. 迭代…...
【PACS】医学影像管理系统源码带三维重建后处理技术
PACS系统,意为影像归档和通信系统。它是应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声,各种X光机,各种红外仪、显微仪等设备产生的图像)通过各…...
从0开始学go 第一天
今天是开始学go的第x天,前些日子看了看语言,今天找一个web开发来跟着学,记录一下遇到的问题,方便以后复习查阅。 视频看的是https://www.bilibili.com/video/BV1gJ411p7xC?p3&vd_sourceab5bdbd04f4142027c66d604d5285204 视…...
Spring Cloud Nacos详解
目录 1、Spring Cloud Nacos详细介绍2、Spring Cloud Nacos具体案列 Spring Cloud Nacos 是一个由阿里巴巴集团开发的开源分布式系统服务发现、配置管理和服务管理的平台。Nacos 支持多种服务发现方式,包括 DNS 方式、HTTP 和 RPC 方式,同时提供了灵活的…...
2023谷歌开发者大会直播大纲「初稿」
听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…...
网站建设实训报告ppt/市场营销计划
还是那句很欠揍的话,没啥难度,直接上代码。 // // ViewController.m // Demo—闪光灯 // // Created by yyt on 16/4/21. // Copyright © 2016年 yyt. All rights reserved. // #import "ViewController.h" #import <AVFoundation…...
b2b网站整合营销/长春seo排名
资源 完全参照状态模式|菜鸟教程但不包括IOS代码 介绍 意图: 允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决: 对象的行为依赖于它的状态(属性),并且可以根据它的状态…...
wordpress 在线浏览/今天的新闻最新消息
剑指offer-打印从1到最大的n位数C实现原题链接 #include <iostream> #include <cmath> #include <vector>using namespace std;class Solution { public:vector<int> printNumbers(int n) {// 由题意可知,输入的最大数为10的n次方for (in…...
禅城网站建设企业/淘宝seo
学号:2017XXXX7217; 我是老表弟(卢冠宇); 我的爱好随心而动; 我的码云个人主页是https://gitee.com/The_Old_Cousin/events; 我的第一个项目地址是https://gitee.com/The_Old_Cousin/new_wareho…...
wordpress使用百度统计/推广赚钱项目
对于一个数组(集合)找出其所有子集,也就是用另一个数组打标记的过程,用0和1记录需要输出的数,而这个过程也就是枚举每一种情况(如:1000、1100、1110…输出的数也就是1对应的数)。由于…...
浙江网站建设哪家好/登封搜索引擎优化
是台湾一个培训机构的、介绍的比较详细,发过来共享。/Files/AlphaWu/MasterPage.pdf 转载于:https://www.cnblogs.com/AlphaWu/archive/2006/06/04/417053.html...