历史上的今天
今天是:2025年06月28日(星期六)
2018年06月28日 | stm32f407之PWM(操作寄存器)
2018-06-28 来源:eefocus
脉宽调制模式可以生成一个由TIMx_ARR寄存器的值确定频率和TIMx_CCRx寄存器的值确定占空比的信号。
脉宽调制模式可以生成一个由TIMx_ARR寄存器的值确定频率和TIMx_CCRx寄存器的值确定占空比的信号。
可以对每个通道独立选择PWM模式,( OCx输出一个PWM信号)在TIMx_CCMRx寄存器的OCxM位写110(PWM模式1)或111(PWM模式2)。必须通过设置TIMx_CCMRx寄存器的OCxPE位,启用相应的预装载寄存器,最后还要设置TIMx_CR1寄存器的ARPE位,(在向上计数或中心对称模式中)使能自动重装载的预装载寄存器。
仅当发生一个更新事件的时候,预装载寄存器才能被传送到影子寄存器,因此在计数器开始计数之前,必须通过设置TIMx_EGR寄存器中的UG位来初始化所有的寄存器。
OCx的极性可以通过软件在TIMx_CCER寄存器中的CCxP位设置,它可以设置为高电平有效或低电平有效。TIMx_CCER寄存器中的CCxE位控制OCx输出使能。详见TIMx_CCERx寄存器的描述。
配置步骤:
1. 使能相关时钟。
2. 配置相关的引脚模式、速度、以及复用功能。
3. 使能TIM时钟
4. 设置分频。
5. 设置周期。(ARR的值)周期=(PSC+1)* ARR / TIMx时钟
6. 产生一次更新事件,更新影子寄存器的值。
7. 在CCMR中设置PWM模式。
8. 设置各通道占空比。占空比= CCRx / ARR。
9. 使能比较输出。
10. 启动预装载。
11. 打开定时器。
程序:
/************************************ 标题:输出4路PWM 软件平台:IAR for ARM6.21 硬件平台:stm32f4-discovery 主频:168M author:小船 data:2012-02-08 *************************************/ #includevoid main () { SCB->AIRCR = 0x05FA0000 | 0x400; //中断优先级分组 抢占:响应=3:1 RCC->AHB1ENR |= (1<<2); //打开GPIOC时钟 GPIOC->MODER |= 0X000AA000;//pc6789第二功能 //推挽输出 GPIOC->OSPEEDR |= 0x000ff000;//速度100m GPIOC->PUPDR |= 0x00055000;//上拉 GPIOC->AFR[0] |= 0x22000000;//pc6789第二功能AF2 GPIOC->AFR[1] |= 0x00000022; RCC->APB1ENR |= (1<<1); //打开TIM3时钟 TIM3->PSC = 83; //对时钟84M进行84分频,使得计数频率为1M TIM3->ARR = 10000; //周期10ms TIM3->EGR |= 1; //产生一次更新事件 TIM3->CCMR1 |= 0x6060;//PWM模式1 TIM3->CCMR2 |= 0x6060;//PWM模式1 TIM3->CCR1 = 8000;//设置第一通道占空比80% TIM3->CCR2 = 6000;//设置第二通道占空比60% TIM3->CCR3 = 4000; //设置第三通道占空比40% TIM3->CCR4 = 2000; //设置第四通道占空比20% TIM3->CCER |= 0x1111;//使能比较输出 TIM3->CCMR1 |= 0x0808;//启动预装载 TIM3->CCMR2 |= 0x0808; TIM3->CR1 |= 1; //开始计时 while(1) { }; }
史海拾趣
|
型号 24c16a 27pu,用10k电阻上拉,一直处于非写保护状态 用了两个EEPROM,最初一切正常,读写一段时间后都有类似以下情况出现 第0页第一次读取数据正常,再读取一次得到乱码 第1页读取正常 第2页第一次读取乱码,再读取一次正常 有几页写入后 ...… 查看全部问答> |
|
目前在编译BSP工程的时候遇见下面的错误: In file included from ..\\prjConfig.c:117: C:\\Tornado2.2\\target\\config\\comps\\src\\net\\usrNetShow.c:24: `RT_DISPLAY_MEMORY\' undeclared here (not in a function) C:\\Torn ...… 查看全部问答> |
|
我用的是mini2440开发板,用外扩的串口与仪表相连,无法接收数据。而用计算机与仪表连时有乱码,开发板与计算机连时数据正常接收,请问为什么开发板与仪表串口连时数据怎么接收啊!!!… 查看全部问答> |
|
打算搞嵌入式,最近琢磨了下。想请教各位大侠,如果我自己学习嵌入式,需要的arm开发板具体型号是多少?需要买LCD 吗?还要买数据线吗?要准备什么书呢? 还有,怎么才能顺利的从webJava开发工作转到嵌入式方向呢?… 查看全部问答> |
|
著名法国公司北京研发中心招聘以下职位,以组建新团队。 需4年相关经验 有意者请联系wopafeng@hotmail.com 1.Senior RF engineer (Antenna) – 802.11n(若干名) 2.Technical leader – 802.11n(若干名) 嵌入式,Linux 3.(Senior) So ...… 查看全部问答> |
|
像51中,对于变量的访问方式有data、idata、xdata、code; 那在IAR下的STM8的访问关键字是哪些呢?这个在51代码移植到STM8下遇到了这个 问题,虚心请教大家。 我在手册中看到四个寻址指针定义 分别是tiny、near、far、huge,那我如果快速 ...… 查看全部问答> |




