历史上的今天
今天是:2024年10月28日(星期一)
2019年10月28日 | STM32F103之Timer2PWM输出
2019-10-28 来源:eefocus
一、简介
本文以STM32F103编程为例,介绍STM32F103Timer2 PWM输出。
二、实验平台
电脑平台:Windows7 64位旗舰
编译软件:IAR
硬件平台:STM32F103CB
四、实验前提
1、在进行本文步骤前,请先安装IAR Embedded Workbench 5.4版本;准备好STM32F103CB硬件平台。
五、基础知识
暂无
六、源码地址
暂无
七、关联文章
八、实验内容
1.初始化Timer2,初始化时需先开起相关时钟
void Hal_Init_Pwm(uint16 period,uint16 Prescaler)
{
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); /*开定时器2时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); /*GPIO时钟开启*/
/*引脚配置*/
GPIO_InitTypeDef GPIO_InitStructure; /*配置GPIO*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; /*复用输出*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/*配置TIMER2*/
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /*配置TIMER2*/
TIM_DeInit(TIM2); /*初始化定时器2*/
TIM_TimeBaseStructure.TIM_Period = period; /*重装值 计数到最大为3600-1 然后从0开始*/
TIM_TimeBaseStructure.TIM_Prescaler = Prescaler; /*分频系数*/
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1 ; /*时钟分割*/
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; /*向上计数*/
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/*配置TIMER2PWM输出*/
TIM_OCInitTypeDef TIM_OCInitStructure; /*配置TIMER2PWM输出*/
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; /*PWM2模式输出*/
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; /*比较输出使能*/
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; /*输出极性高 输出高电平*/
/*通道1*/
// TIM_OCInitStructure.TIM_Pulse =40*36;
// TIM_OC1Init(TIM2, &TIM_OCInitStructure);
// TIM_OC1PreloadConfig(TIM2, TIM_OCPreload_Enable);
/*通道2*/
TIM_OCInitStructure.TIM_Pulse =0; /*设置占空比*/
TIM_OC2Init(TIM2, &TIM_OCInitStructure); /*初始化外设TIMx 通道*/
TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);/*CH1预装载使能*/
/*通道3*/
// TIM_OCInitStructure.TIM_Pulse =90*36;
// TIM_OC3Init(TIM2, &TIM_OCInitStructure);
// TIM_OC3PreloadConfig(TIM2, TIM_OCPreload_Enable);
/*通道4*/
// TIM_OCInitStructure.TIM_Pulse =0*36;
// TIM_OC4Init(TIM2, &TIM_OCInitStructure);
// TIM_OC4PreloadConfig(TIM2, TIM_OCPreload_Enable);
TIM_ARRPreloadConfig(TIM2, ENABLE); /*使能TIMx在ARR上的预装载寄存器*/
TIM_Cmd(TIM2, ENABLE); /*使能定时器2*/
}
2.编写主函数
void main(void)
{
Init_Clock(); /*初始化时钟*/
Hal_Init_Pwm(64000-1,0); /* F = PLL / (64000-1) */
TIM_SetCompare2(TIM2,50*640); /*输出占空比为50%*/
while(1);
}
史海拾趣
|
想在pc和device之间通过rapi进行通信,但是找不到rapi.lib 哪位兄弟有给发一个到邮箱guopeixin@yahoo.com.cn中, 先行谢过了… 查看全部问答> |
|
应届毕业生,公司要求学ecos,但是从来没有接触过,身边也没有人懂这个,在网上转了一大圈也没找到多少资料,有懂行的朋友能帮忙推荐一两本好点的书吗? 我在淘宝找了下找到了下面3本书: 《嵌入式可配置实时操作系统eCos技术及实现机制》 《嵌 ...… 查看全部问答> |
|
USB可以称得上是目前最为成功,最有优势的外设接口规范,随着时代的发展,外设的进步,USB接口规范也需要有相应的配套升级,于是所谓的“SuperSpeed USB”(超高速USB)出现了,也就是我们今天要重点介绍的USB 3.0的优势。 USB 3.0有两大最能拿得 ...… 查看全部问答> |
|
从语言进步到编程 1. 语言和编程本是两码事 分不清语言和编程的人,估计很能学得好编程。 1.1 盲从技术只能让你晕的更久 和其它事物一样,软件编程的发展也经历了从低级到高级的各个阶段。从机器代码到汇编语言,从汇编语言到高级 ...… 查看全部问答> |
|
大家编程都用什么仿真器?又一个 Jlink 固件升级后变成 unknow device 在淘宝上买了两个 J-Link V8,现在两个都已经因为固件升级变成了 unknown device. J-Link 功能强大,确实是非常不错的仿真器。 大家有没有比 J-Link 觉得更好用的仿真器呢? … 查看全部问答> |




