定时器PWM
更新时间:2024-04-26 18:01:01 阅读量: 综合文库 文档下载
天水师范学院
TIANSHUI NORMAL UNIVERSITY
《微机原理与接口技术》
实验报告
名称:定时器PWM输出 学院:电子信息与电气工程学院 专业:电子信息工程 班级:16级电信一班 姓名:张响生秦汉柱
学号: 20161060107 20161060132
一、实验目的;
1、掌握使用 STM32 的通用定时器的方法
2、掌握使用STM32 的 TIM3 来产生 PWM 输出
二、实验原理;
1、STM32 的通用定时器是一个通过可编程预分频器(PSC)驱动的 16 位自动
装载计数器(CNT)构成。可以被用于:测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM)等。使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。STM32 的每个通用定时器都是完全独立的,没有互相共享的任何资源。 2、STM32的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能包括:
1)16 位向上、向下、向上/向下自动装载计数器(TIMx_CNT)。
2)16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数为 1~65535 之间的任意数值。 3)4 个独立通道(TIMx_CH1~4),这些通道可以用来作为: A.输入捕获 B.输出比较
C.PWM 生成(边缘或中间对齐模式) D.单脉冲模式输出
4)可使用外部信号(TIMx_ETR)控制定时器和定时器互连(可以用 1 个定时器控制另外一个定时器)的同步电路。 5)如下事件发生时产生中断/DMA:
A.更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)
B.触发事件(计数器启动、停止、初始化或者由内部/外部触发计数) C.输入捕获 D.输出比较
E.支持针对定位的增量(正交)编码器和霍尔传感器电路 F.触发输入作为外部时钟或者按周期的电流管理
2、脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技
术。
1)PWM 模式
脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。
在PWM模式下,TIMx_CNT和TIMx_CCRx始终在进行比较,(依据计数器的计数方向)以确定是否符合TIMx_CCRx≤TIMx_CNT或者TIMx_CNT≤TIMx_CCRx,以便输出某一电平信号。
PWM模式1在向上计数时,一旦TIMx_CNT
PWM模式2在向上计数时,一旦TIMx_CNT
三、实验电路图;
四、关键代码;
Init.h
/************************RCC寄存器组定义*******************/ #define RCC_CR *((unsigned volatile int *)0X40021000) #define RCC_CFGR *((unsigned volatile int *)0X40021004) #define RCC_APB2ENR *((unsigned volatile int *)0X40021018) #define RCC_APB1ENR *((unsigned volatile int *)0X4002101c)
/************************TIM寄存器组定义*******************/
#define TIM3_CR1 *((unsigned volatile int *)0X40000400) #define TIM3_SMCR *((unsigned volatile int *)0X40000408) #define TIM3_DIER *((unsigned volatile int *)0X4000040c) #define TIM3_SR *((unsigned volatile int *)0X40000410) #define TIM3_EGR *((unsigned volatile int *)0X40000414) #define TIM3_CCMR1 *((unsigned volatile int *)0X40000418) #define TIM3_CCMR2 *((unsigned volatile int *)0X4000041c) #define TIM3_CCER *((unsigned volatile int *)0X40000420) #define TIM3_CNT *((unsigned volatile int *)0X40000424) #define TIM3_PSC *((unsigned volatile int *)0X40000428) #define TIM3_ARR *((unsigned volatile int *)0X4000042c) #define TIM3_CCR1 *((unsigned volatile int *)0X40000434) #define TIM3_CCR2 *((unsigned volatile int *)0X40000438)
oid Stm32_Clock_Init(unsigned char PLL); void LED_Init(void);
void Delay(long counder); void TIM3_PWM_Init(void); init.c
void TIM3_PWM_Init() { RCC_APB1ENR|=1<<1; //TIM3时钟使能 RCC_APB2ENR|=1<<3; //使能PORTB时钟 GPIOB_CTRL&=0XFF0FFFFF; //PB5输出 GPIOB_CTRL|=0X00B00000; //复用功能输出 RCC_APB2ENR|=1<<0; //开启辅助时钟 AFIO_MAPR&=0XFFFFF3FF; //清除MAPR的[11:10] AFIO_MAPR|=1<<11; //部分重映像,TIM3_CH2->PB5 TIM3_ARR=899; //设定计数器自动重装值 TIM3_PSC=0; //预分频器不分频
TIM3_CCMR1|=7<<12; //CH2 PWM2模式 TIM3_CCMR1|=1<<11; //CH2预装载使能 TIM3_CCER|=1<<4; //OC2 输出使能 TIM3_CR1=0x0080; //ARPE使能 TIM3_CR1|=0x01; //使能定时器3 } Main.c
int main(void) { Stm32_Clock_Init(9); LED_Init();
TIM3_PWM_Init(); while(1) { for (val=0;val<=300;val++) { TIM3_CCR2=val; Delay(60000); } for (val=300;val>=0;val--) { TIM3_CCR2=val; Delay(60000); }
五、功能与结果分析;
正在阅读:
定时器PWM04-26
正确使用标点符号11-19
牛奶的危害05-06
南国铜广播系统工程设计方案书105-10
浅析渔具企业阿里巴巴外贸平台业务处理存在的问题及对策05-23
长征精神永驻我心05-16
今年暑假社会实践报告(通用14篇)03-31
药包材新修订130YBB目录05-03
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 定时器
- PWM
- 出口单据业务B
- 高校人才培养方案辅助管理系统需求分析
- 会信判断题
- 唐华钢铁企业集团有限公司余热蒸汽发电项目申请立项环境影响评估
- 《数据库系统原理》课程基本实验设置
- 荣大一体机技术手册
- 2018年陶瓷市场发展前景分析报告目录
- 医院工会工作调研报告
- 2014四年级文化素质测评试题
- 商品房预售资金监管实施细则
- 2013年4月考试高等数学(II)第三次作业
- 关于中国金融战略的思考(上) 课程的考试 100分
- 青岛海产品出口现状及问题
- 总平施工方案
- PPP项目运营期管理及养护服务方案
- 2015一级建造师项目管理真题(答案及解析)
- 预设与生成问题的研究
- 半导体芯片制造工工作总结与计划范文
- 《3-6岁儿童学习与发展指南》五大领域、子领域、和目标分别是什
- 博培教育 第十三章 电功和电功率 - 图文