底层10.2——PWM实验复习
PWM(蜂鸣器)框图
通过分析框图可知
1.分析RCC章节:相关控制器组使能
2.分析GPIO章节:复用模式/复用功能TIM4_CH1
3.分析TIM4章节:产生特定的方波
定时器工作原理
定时器工作原理:
1.当定时器启动之后,自动重载计数器中的值,会自动加载到递减计数器中
2.递减计数器在CK_CNT时钟驱动下进行工作
3.每来一个时钟周期,递减计数器中的值减1
4.当递减计数器中的值减到0的时候,自动重载计数器中的值,会再次自动加载到递减计数器中 --------------------如何产生PWM方波(比较/捕获寄存器)--------------------
1.当定时器启动之后,自动重载计数器中的值,会自动加载到递减计数器中
2.递减计数器在CK_CNT时钟驱动下进行工作
3.每来一个时钟周期,递减计数器中的值减1
4.如果减到和比较/捕获寄存器中的值相等之后,电平发生翻转,这样就可产生PWM方波信号
pwm.h
#ifndef __PWM_H__
#define __PWM_H__
#include "stm32mp1xx_rcc.h"
#include "stm32mp1xx_gpio.h"
#include "stm32mp1xx_tim.h"//蜂鸣器初始化 pb6-tim4_ch1
void tim_init();
//马达初始化 pf6-tim16_ch1
void mada_init();
//风扇初始化 pe9-time1_ch1
void fan_init();#endif
pwm.c
#include "pwm.h"
void tim_init()
{//RCC_INITRCC->MP_AHB4ENSETR |= (0x1<<1);RCC->MP_APB1ENSETR |= (0x1<<2);//GPIO_INITGPIOB->MODER &= (~(0x3<<12));GPIOB->MODER |= (0x2<<12);GPIOB->AFRL &= (~(0xf<<24));GPIOB->AFRL |= (0x2<<24);//TIM_INIT//设置分频器TIM4->PSC = (208);//设PWM方波占空比 对比较/捕获寄存器进行赋值TIM4->CCR1 =(700);//设置PWM方波最终周期TIM4->ARR =(1000);TIM4->CR1 |= (0x1<<7);TIM4->CR1 &= (~(0x3<<5));TIM4->CR1 |=(0x1<<4);TIM4->CR1 |=(0x1<<0);TIM4->CCMR1 &=(~(0x1<<16));TIM4->CCMR1 &=(~(0x7<<4));TIM4->CCMR1 |=(0x6<<4);TIM4->CCMR1 |=(0x1<<3);TIM4->CCMR1 &=(~(0x3<<0));TIM4->CCER &=(~(0x1<<3));TIM4->CCER &=(~(0x1<<1));TIM4->CCER |=(0x1<<0);}
//马达初始化 pf6-tim16_ch1
void mada_init()
{RCC->MP_AHB4ENSETR |=0X1<<5; RCC->MP_APB2ENSETR |=0X1<<3; GPIOF->MODER &=(~(0X3<<12)); GPIOF->MODER |=(0X1<<13); GPIOF->AFRL &=(~(0XF<<24)); GPIOF->AFRL |=0X1<<24; //TIM_INIT//设置分频器TIM16->PSC = (208);//设置PWM方波最终周期TIM16->CCR1 =(700);//设PWM方波占空比 对比较/捕获寄存器进行赋值TIM16->ARR =(1000);TIM16->CR1 |= (0x1<<7);TIM16->CR1 &= (~(0x3<<5));TIM16->CR1 |=(0x1<<4);TIM16->CR1 |=(0x1<<0);TIM16->CCMR1 &=(~(0x1<<16));TIM16->CCMR1 &=(~(0x7<<4));TIM16->CCMR1 |=(0x6<<4);TIM16->CCMR1 |=(0x1<<3);TIM16->CCMR1 &=(~(0x3<<0));TIM16->CCER &=(~(0x1<<3));TIM16->CCER &=(~(0x1<<1));TIM16->CCER |=(0x1<<0);TIM16->BDTR |=(0x1<<15);}
//风扇初始化 pe9-time1_ch1
void fan_init()
{RCC->MP_AHB4ENSETR |=0X1<<4; RCC->MP_APB2ENSETR |=0X1<<0; GPIOE->MODER &=(~(0X3<<18)); GPIOE->MODER |=(0X1<<19); GPIOE->AFRH &=(~(0XF<<4)); GPIOE->AFRH |=0X1<<4; //TIM_INIT//设置分频器TIM1->PSC = (208);//设置PWM方波最终周期TIM1->CCR1 =(700);//设PWM方波占空比 对比较/捕获寄存器进行赋值TIM1->ARR =(1000);TIM1->CR1 |= (0x1<<7);TIM1->CR1 &= (~(0x3<<5));TIM1->CR1 |=(0x1<<4);TIM1->CR1 |=(0x1<<0);TIM1->CCMR1 &=(~(0x1<<16));TIM1->CCMR1 &=(~(0x7<<4));TIM1->CCMR1 |=(0x6<<4);TIM1->CCMR1 |=(0x1<<3);TIM1->CCMR1 &=(~(0x3<<0));TIM1->CCER &=(~(0x1<<3));TIM1->CCER &=(~(0x1<<1));TIM1->CCER |=(0x1<<0);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(){tim_init();mada_init();fan_init();while(1){}return 0;}
底层10.2——PWM实验复习相关推荐
- 10.2国庆作业(PWM实验)
文章目录 作业内容 思路分析 1. 电路分析 2. RCC章节分析 3. GPIO章节分析 4. TIM4章节分析(以蜂鸣器为例) 代码实现 pwm.h pwm.c main.c 作业内容 完成PWM ...
- 6、英飞凌-AURIX-TC3XX: PWM实验之使用 GTM -ATOM 实现
目录 6.英飞凌-AURIX-TC3XX: PWM实验之使用 GTM -ATOM 实现 1.ATOM 简介 2.ATOM子模块的框架 3.ATOM 通道的五种操作模式: 4.ATOM通道结构 5.AR ...
- 5、英飞凌-AURIX-TC3X7: PWM实验之使用 GTM -TOM 实现
目录 5.英飞凌-AURIX-TC3X7: PWM实验之使用 GTM -TOM 实现 1.GTM -TOM简介 2.TOM框图 3.TOM全局通道控制--TGC0, TGC1 4.实验简介 4.1.实 ...
- 南京邮电大学matlab实验报告,南邮电工电子实验复习资料与试卷概要
<南邮电工电子实验复习资料与试卷概要>由会员分享,可在线阅读,更多相关<南邮电工电子实验复习资料与试卷概要(19页珍藏版)>请在金锄头文库上搜索. 1. 南京邮电大学电工电子实 ...
- ARM接口实验-PWM实验
一.PWM概念 1.PWM:脉冲宽度调制定时器 2.脉冲:方波信号,高低电平的变化产生方波信号 3.周期:高低电平变化所需要的时间,单位:ms 4.频率:周期和频率之间是倒数关系,1S钟可以产生的多少 ...
- 史上最著名的10个思想实验 (转)
想过什么是哲学吗?可能大家都不是很说的清楚.看看下面这些"史上最著名的10个思想实验",可能你对哲学会有自己的理解了. 10.电车难题(The Trolley Problem) & ...
- 基于STM32MP157A的蜂鸣器,马达,震动马达PWM实验
PWM实验 PWM概念 代码实现 pwm.c pwm.h main.c PWM概念 1.PWM:脉冲宽度调制定时器 2.脉冲:方波信号,高低电平的变化产生方波信号 3.周期:高低电平变化所需要的时间, ...
- 【思科CCNA理论专题:10】--ACL实验扩展-晁海江-专题视频课程
[思科CCNA理论专题:10]--ACL实验扩展-5661人已学习 课程介绍 更多课程,请百度搜索"晁海江". 策略有很多,在前面的CCNP视频中,已经做过路由映射 ...
- c语言知识点演讲,C语言实验复习资料讲课讲稿.doc
实验三 顺序结构和输入输出 3.编写程序.用getchar函数读入两个字符C1,C2,然后分别用putchar函数和printf函数输出这两个字符.并思考以下问题. 3-4 请回答书中问题 问题(1) ...
最新文章
- [Git] 写文章 史上最全文献检索、阅读及管理攻略
- ASP.NET.4.5.1+MVC5.0系统角色和权限讲解
- haskell读写文件相关(含二进制)
- java string blog_StringUtils方法全集
- java进程内存一直没释放_面试官:一个线程OOM,进程里其他线程还能运行么?...
- linux centos7安装ngix,centos7 环境下安装nginx--Linux
- apache ab压力测试报错
- 建筑设计 - 概念设计 - 笔记:- 第一章
- 浅谈Hybrid技术的设计与实现第二弹
- GNU ARM汇编--(五)中断汇编之嵌套中断处理
- 清华姚班和100个张小龙
- simulink——产生阶梯波
- 大数据分布式数据库系统介绍
- Springboot+MySQL实现多数据源的信息导入
- 全国计算机等级一级b真题,2011年3月全国计算机等级考试一级B真题及参考答案.doc...
- 实现微信小程序与微信生态的互相跳转H5入口
- DOTween的使用
- python123注册登录_用Python实现web端用户登录和注册功能的教程
- 《数据结构与抽象:Java语言描述(原书第4版)》一2.1.7 删除项的方法
- PS仔细抠图(头发处的处理)