stm32定时器TIM2的PWM输出PB3

发布者:冰心独语u最新更新时间:2019-02-13 来源: eefocus关键字:stm32  定时器  TIM2  PWM输出  PB3 手机看文章 扫描二维码
随时随地手机看文章

弄了好久,查了很多文章,最后解决了,用的是PB3 

引脚配置


void GPIO_TimPWM(void)

{

 GPIO_InitTypeDef GPIO_InitStructure;     

  RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);   

  GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);  

  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); 

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;          

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   

  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_3 ;  

  GPIO_Init(GPIOB, &GPIO_InitStructure);  

}


定时器和中断配置


void Timer2_Configuration(void)

{

  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

 TIM_OCInitTypeDef  TIM_OCInitStructure;

 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

 TIM_TimeBaseStructure.TIM_Period = 1000-1;             

 TIM_TimeBaseStructure.TIM_Prescaler = 72-1;            

 TIM_TimeBaseStructure.TIM_ClockDivision = 0x00;    

 TIM_TimeBaseStructure.TIM_CounterMode =  TIM_CounterMode_Up;   

 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  TIM_ARRPreloadConfig(TIM2, DISABLE);

 TIM_ClearITPendingBit(TIM2,  TIM_IT_Update); 

 TIM_ITConfig(TIM2,  TIM_IT_Update, ENABLE);

 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; 

 TIM_OCInitStructure.TIM_OutputState =   TIM_OutputState_Enable; 

 TIM_OCInitStructure.TIM_Pulse = 500-1;     

 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;

 TIM_OC2Init(TIM2, &TIM_OCInitStructure);  

 TIM_OC2PreloadConfig(TIM2, TIM_OCPreload_Enable);  

 TIM_CtrlPWMOutputs(TIM2,ENABLE);       

 TIM_Cmd(TIM2, ENABLE);

}


产生1K的频率

关键字:stm32  定时器  TIM2  PWM输出  PB3 引用地址:stm32定时器TIM2的PWM输出PB3

上一篇:stm32f103系列芯片P15端口当做普通IO使用
下一篇:STM32与Flash AT45DB321D之间读写数据

推荐阅读最新更新时间:2024-03-16 16:23

STM32 C语言编程易错问题总结
(1)注意数组越界问题;有时候前面定义一个数组,在后面使用时候,对数组越界赋值或者操作; (2)错误的条件判断方式;If(0 data 100);//这是错误的写法 应该改成if(0 data && data 100); (3)Switch语句使用:switch和case中间的代码是不会被执行的; (4)在定时器中断服务函数中,定义的变量,一定要修改成全局,否则这个变量会一直被重新定义。这里可以使用static,把函数中的局部变量修改成全局变量。 易错分析,在中断服务函数内部很里面定义一个局部变量,就会出现这个错误; 不仅仅是定时器中断服务函数,其他中断服务函数也是一样的道理; 对比: (5)函数里面定义的局部
[单片机]
<font color='red'>STM32</font> C语言编程易错问题总结
STM32时钟RCC详解(三)
RCC相关库函数解析 1、库中所涉及到的结构体 typedef struct { uint32_t SYSCLK_Frequency; uint32_t HCLK_Frequency; uint32_t PCLK1_Frequency; uint32_t PCLK2_Frequency; uint32_t ADCCLK_Frequency; }RCC_ClocksTypeDef; 2、库函数解析 void RCC_DeInit(void); //将外设RCC寄存器设为缺省值;(除RCC_BDCR和RCC_CSR) void RCC_HSEConfig(uint32_t RCC_HSE); //设置外部高速晶
[单片机]
利用STM32通用定时器实现输出两路占空比和频率可调的互补PWM
MCU:STM32F334C8T6 PWM即脉宽调制,可以用来驱动电机,驱动全桥电路等,用过STM32的知道,用它的定时器可以很容易实现PWM输出,使用高级定时器的TIMx_CHy和TIMx_CHyN可以轻易实现互补PWM(complementary PWM)波形的输出。 高级定时器资源有限,本文利用通用定时器(General-purpose timers)实现互补PWM输出,在高级定时器资源不够时不失为一个好方法。 STM32的定时器PWM有两种模式:PWM mode 1和PWM mode 2 工作原理: PWM mode 1 - In upcounting, channel 1 is active as lon
[单片机]
利用<font color='red'>STM32</font>通用<font color='red'>定时器</font>实现<font color='red'>输出</font>两路占空比和频率可调的互补PWM
STM32系统中的五个时钟源介绍
时钟信号好比是单片机的脉搏,了解STM32时钟系统很有必要。下图是STM32F1xx用户手册中的时钟系统结构图。 在STM32F1xx中,有五个时钟源,分别为HSI、HSE、LSI、LSE、PLL。 HSI是高速内部时钟,RC振荡器,频率为8MHz HSE是高速外部时钟,可接石英/陶瓷谐振器或者接外部时钟源,频率范围为4MHz~16MHz LSI是低速内部时钟,RC振荡器,频率为40kHz LSE是低速外部时钟,接频率为32.768kHz的石英晶振 PLL为锁相环倍频输出,其输出频率最大不得超过72MHz SYSCLK系统时钟SYSCLK最大频率为72MHz,它是供STM32中绝大部分部件工作的时钟源。系统时钟可由PLL、
[单片机]
<font color='red'>STM32</font>系统中的五个时钟源介绍
STM32对于U盘访问的硬件/软件实现
一些应用中,涉及到对存储设备的数据访问,例如USD卡、U盘。具备USB OTG控制器的STM32,可以实现对U盘访问的支持。本文介绍STM32对于U盘访问的硬件/软件实现。介绍如何利用STM32CubeMX,一步一步实现STM32访问U盘。仅需简单的几个步骤, 实现U盘访问的应用开发。 MSC类简介 MSC (Mass Storage Class) 是USB规范提供的一种USB大容量存储设备类,允许一个USB接口的设备与USB主机相连接,以便在两者之间传输文件。USB MSC传输协议分为CBI (Control / Bulk / Interrupt) 和 BOT (Bulk-only Transfer)。BOT协议在不影响功能
[单片机]
<font color='red'>STM32</font>对于U盘访问的硬件/软件实现
STM32标准库、HAL库特点与应用
新手在入门STM32的时候,一般大多数都会选用标准库和HAL库,而极少部分人会通过直接配置寄存器进行开发。 对于刚入门的朋友可能没法直观了解这些不同开发发方式彼此之间的区别,本文试图以一种非常直白的方式,用自己的理解去将这些东西表述出来。 配置寄存器 不少先学了51的朋友可能会知道,会有一小部分人或是教程是通过汇编语言直接操作寄存器实现功能的,这种方法到了STM32就变得不太容易行得通了。 因为STM32的寄存器数量是51单片机的十数倍,如此多的寄存器根本无法全部记忆,开发时需要经常的翻查芯片的数据手册,此时直接操作寄存器就变得非常的费力了。也有人喜欢去直接操作寄存器,因为这样更接近原理,代码更少,知其然也知其所以然。
[单片机]
<font color='red'>STM32</font>标准库、HAL库特点与应用
OV7740 之STM32 源代码
/* Includes ------------------------------------------------------------------*/ #include stm32f10x.h #include stm32f10x_exti.h #include OV7740.h #include OV7740Reg.h #include sccb.h #include misc.h #include delay.h /* Private define ------------------------------------------------------------*
[单片机]
主流32位单片机攻略连载:为什么要学STM32
为什么学习STM32?   先列举一下大家问得最多的几个问题,然后我们一起由问题切入进行一些讨论。   首先问题1:我是单片机好还是直接学STM32好呢?   答:1)首先我们谈下目的,你学习的最终目的是能够开发产品或者成为项目经理;而目前市场上的单片机都基本用C语言了,用汇编进行开发的项目已经非常少了   2)在硬件接口这个环节上都一样:学51单片机和学STM32都是一样的,主要看其市场上的资料是不是足够充分,都是调用硬件的接口,控制I/O,完成相应的功能   3)在软件这个环节上,STM32要强过51单片机:为什么这么说呢?学STM32它自带一个官方的库,而这个库的源代码是开放的;而51单片机却没有,也就说,当你
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved