STM32-高级定时器TIM1的应用

发布者:幸福的家园最新更新时间:2017-10-26 来源: eefocus关键字:STM32  高级定时器  TIM1 手机看文章 扫描二维码
随时随地手机看文章

void GPIO_Configuration(void)//配置IO脚

{

       GPIO_InitTypeDef GPIO_InitStructure;

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;      

       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

       GPIO_Init(GPIOA, &GPIO_InitStructure);

       GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;      

       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

       GPIO_Init(GPIOB, &GPIO_InitStructure);

}

void TIM1_Configuration(void)

{

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

       TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

       TIM_OCInitTypeDef TIM_OCInitStructure;

       TIM_DeInit(TIM1); //重设为缺省值

      TIM_TimeBaseStructure.TIM_Prescaler = 4000;      //预分频(时钟分频)72M/4000=18K

      TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数

      TIM_TimeBaseStructure.TIM_Period = 144;       //装载值 18k/144=125hz 就是说向上加的144便满了

      TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;   //设置了时钟分割 不懂得不管

      TIM_TimeBaseStructure.TIM_RepetitionCounter = 0x0;    //周期计数器值 不懂得不管

      TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);    //初始化TIMx的时间基数单位

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;      //PWM模式2

TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //正向通道有效 PA8 

TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable; //反向通道也有效 PB13

TIM_OCInitStructure.TIM_Pulse = 40;         //占空时间 144 中有40的时间为高,互补的输出正好相反

TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low; //输出极性

TIM_OCInitStructure.TIM_OCNPolarity = TIM_OCNPolarity_Low;    //互补端的极性 

TIM_OCInitStructure.TIM_OCIdleState = TIM_OCIdleState_Reset; //空闲状态下的非工作状态 不管

TIM_OCInitStructure.TIM_OCNIdleState = TIM_OCIdleState_Reset; //先不管

TIM_OC1Init(TIM1,&TIM_OCInitStructure);       //数初始化外设TIMx通道1这里2.0库为TIM_OCInit

TIM_Cmd(TIM1,ENABLE);

TIM_CtrlPWMOutputs(TIM1,ENABLE);      

}

void SetT1Pwm1(u16 pulse)//设置捕获寄存器1

{

        TIM1->CCR1=pulse;

}

/*TIM1的定时器通道时间 1到4 分别为 PB8 PA9 PA10 PA11 而互补输出分别为 PB13 、PB14 、PB15、 PB12

 STM32-高级定时器TIM1的应用

如果输出与互补输出极性相同的话 就刚好输出高 互补低 至于PWM模式1 与模式2的区别。如下图模式一:STM32-高级定时器TIM1的应用

STM32-高级定时器TIM1的应用

模式2与模式1互补,144中有40 为高 互补的有40为低。


关键字:STM32  高级定时器  TIM1 引用地址:STM32-高级定时器TIM1的应用

上一篇:STM32-TIMx_OCMode的两种模式的理解
下一篇:STM32--如何产生8路PWM波

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

stm32 学习 (设置TIM4输出4路 pwm J-LINK仿真验证)
使用单片机:stm32f103c8t6 资源 RAM: 20K; flash: 64K;CPU频率: 72M;通用I/O: 32个;UART: 3个;SPI:2个;USB:1个;CAN: 1个;IIC: 2个 12 位同步 ADC: 2 组 10 通道 ; 工作电压: 2.0 至 3.6V 原理图: PWM输出过程: 1. 脉冲计数器 TIMx_CNT 为向上计数。 2. 重载计数器 TIMx_ARR 配置为N。(TIM_Period值) 3. TIMx_CNT的当前计数值 X 在TIMxCLK时钟源驱动下不断累加; 脉冲计数器 TIMx_CNT 数值 X 大于 重载计数器 TIMx_ARR
[单片机]
<font color='red'>stm32</font> 学习 (设置TIM4输出4路 pwm J-LINK仿真验证)
如何实现stm32单片机每次接上电源就进行一次重启动?
如何实现stm32单片机每次接上电源就进行一次重启动? 在嵌入式系统中,单片机的重启有时是十分必要的,它可以解决一些系统启动过程中的问题、恢复系统的正常运行、使系统更加稳定等。 然而,有时候我们需要每次接上电源就进行一次重启,也就是实现系统的自动重启。本文将给出一个思路,来实现stm32单片机每次接上电源就进行一次重启动。 一、背景知识 在嵌入式系统中,有两类重启,分别是软重启和硬重启。 1.1 软重启 软重启是指通过程序控制单片机重新开始执行,实现系统的重启。在stm32单片机中,一般采用如下代码进行软重启: ```c NVIC_SystemReset(); //调用此函数进行软重启 ``` 1.2 硬重启 硬重启是指通过硬件控
[单片机]
STM32->ADC
ADC初始化,以HAL库为例: MX_ADC1_Init(); //cube自动生成的初始化结构,会调用HAL_ADC_MspInit()初始化底层寄存器。 HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig) 设置通道参数: typedef struct { uint32_t Channel; uint32_t Rank; uint32_t SamplingTime; }ADC_Channe
[单片机]
STM32—TIMx实现编码器四倍频
一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频,并使用M法测速得到小车电机的速度信息。 编码器的相关知识之前介绍过:编码器s M法测速:读取每10ms的脉冲数,以脉冲数的多少代表速度的快慢。 二.TIMx的编码器模式介绍 TIMx的编码器模式,每个定时器只能测量一组AB相的值(编码器的AB相),分别使用CH1和CH2接AB相,通过判断CH1和CH2的输入信号,来实现编码器的测速。需要配置TI1和TI2的极性、计数边沿、自动装载值等信息来驱动编码器模式。在实现编码器后,电机的转速会以计数器的值来表示,然后在另一个TIMx的10ms中断程序中读取编码器计数器的值(读取完要置零)。 下面大概总结一下配置编码
[单片机]
<font color='red'>STM32</font>—TIMx实现编码器四倍频
STM32片内RTC亚秒特性的应用示例(上)
绝大多数STM32系列里的RTC都具有亚秒【或称子秒】计数单元。为了了解亚秒特性及功能,不妨先看RTC的功能框图。本文中的有关截图若无特别说明均来自STM32L4系列参考手册。 RTC的时钟源【RTCCLK】可以是LSE、LSI或者HSE/32,由RTCCLK最终变成日历的秒脉冲驱动信号经过了2次分频。先经过上图中A处的异步分频单元,默认分频系数是128,形成ck_apre时钟,默认情况下该时钟频率为256Hz;然后该时钟脉冲来到图中B处的同步分频单元,默认分频系数为256,最终形成1Hz的秒脉冲【ck_spre】到日历单元。关于两分频单元分频系数的配置,通过对RTC_PRER寄存器的相关位编程实现。 其中异步分频系数配
[单片机]
<font color='red'>STM32</font>片内RTC亚秒特性的应用示例(上)
STM32实例-步进电机的速度控制
项目需求 在制作一个使用全向轮的机器人底盘,对于全向轮,电机的精度是影响效果的重要因素。所以使用了步进电机,使用步进电机的优点是可以不使用编码器,开环控制即可达到高精度的效果。 调整占空比或者调整周期 众所周知,PWM有两个重要参数,周期与占空比。 步进电机的运动方式是,每收到一个脉冲,就旋转指定的角度。因此影响电机速度的唯一参数就是PWM的频率。以下附图两张来说明调整占空比与调整周期的区别。 周期固定,调整占空比 上图中有4个PWM,它们的周期是一样的,不同之处是拥有从80%至20%的占空比。可以看出,无论占空比为多少,在1s内,它们产生的高电平的数量是一样的,即无论占空比为多少,PWM的频率都一致。因此也就无法调整
[单片机]
限量7折!米尔STM32MP135开发板
说到 MCU 就会想到 S MT32, 而 STM32MP1 作为新一代 MPU 的典范,有着极富开创意义的异构系统架构,兼容 MPU 和 MCU 的 双重优势,入门级、性价比高、能跑 L inux 系统、应用场景丰富 等 特点,深 受业界的喜爱! 米尔电子作为 ST 官方合作伙伴,先后开发了 S TM32MP151 、 S TM32MP157 、 STM32MP13 5 系列核心板和开发板,受到广大客户的认可。 米尔为了感谢广大客户的支持,推出 STM32MP1 35 开发板打折特惠活动! 米尔基于 STM32MP1 35 开发板 限 量 7 折! 7 折!
[嵌入式]
限量7折!米尔STM32MP135开发板
低于一美金!32位MCU抢占8位市场
自2007年发布第一个ARM Cortex-M3架构的STM32基本型之后,意法半导体在单片机领域找到了市场大幅扩张的途径。根据iSuppli的统计资料显示,2008年意法半导体MCU收入年增长率达到38%,从2007年的第10位跃升至第五位。而今,意法半导体似乎已不满足于现有的32位产品市场份额,正逐步将STM32架构打入16位甚至8位市场应用中。 超值型STM32问世 随着客户对于计算的需求越来越高,比如家用电器,消费电子及工业控制中,8位MCU已经无法满足了,因此我们会推出在一美金以下的32位产品。 我们先来看看,这款批量售价低于1美金的STM32中,究竟有哪些特性: 整合24MH
[单片机]
低于一美金!32位MCU抢占8位市场
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

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