stm32 精确个数高速脉冲输出

发布者:EnchantingEyes最新更新时间:2017-09-26 来源: eefocus关键字:stm32  高速脉冲输出 手机看文章 扫描二维码
随时随地手机看文章
/****************************
**TIM2的通道1使用单脉冲模式
**TIM3使用门控模式用来输出PWM
**
****************************/
//TIM2per:重装值
//Compare1:比较捕获1的预装载值
void Motor_Init(u16 TIM2per, u16 TIM3per, u16 TIM3Compare1)
{
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
  TIM_OCInitTypeDef TIM_OCInitStruct;
  GPIO_InitTypeDef GPIO_InitStruct;
  
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//使能定时器2的时钟
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//使能定时器3的时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//使能GPIOA时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//使能复用IO时钟
  
http://write.blog.csdn.net/postedit


GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//复用推挽输出
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_6;//PA0
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&GPIO_InitStruct);
  
  //TIM2工作在单脉冲下
  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//没有时钟分割
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//向上计数模式
  TIM_TimeBaseInitStruct.TIM_Prescaler = 7200;//预分频值,每100us计数一次
  TIM_TimeBaseInitStruct.TIM_Period = TIM2per;//重装值
  TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);
  
  TIM_SelectOnePulseMode(TIM2,TIM_OPMode_Single);//设置TIM2在单脉冲模式,且是单一的脉冲,在下一个更新事件停止
  TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);//使能定时器2的通道1预装载寄存器
  TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_OC1Ref);
  
  TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2;//在向上计数时,一旦TIMx_CNT


关键字:stm32  高速脉冲输出 引用地址:stm32 精确个数高速脉冲输出

上一篇:STM32F407ZGT6之时钟系统介绍
下一篇:stm32f103 超声波 输入捕获配置及计算

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

stm32之继电器驱动
继电器(英文名称:relay)是一种电控制器件,当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的 阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化 的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。 虽然很简单,但是可以作为入门知识来学习。 第一步: 找到单片机控制继电器的引脚,引脚设置成高电平,可以让继电器开,设为低电平,即是关。所以我们要去看原理图,找 到单词relay,一般旁边会有个电阻。其次,我们接着看底板relay对应的数据,比如:I2C1_SDA。然后找I2C1_SDA对应得引 脚,比如PB7。 第二步
[单片机]
STM32——高级定时器、通用定时器、基本定时器 的区别
TIM1和TIM8定时器的功能包括【增强型】: ● 16位向上、向下、向上/下自动装载计数器 ● 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意数值 ● 多达4个独立通道: ─ 输入捕获 ─ 输出比较 ─ PWM生成(边缘或中间对齐模式) ─ 单脉冲模式输出 ● 死区时间可编程的互补输出 ● 使用外部信号控制定时器和定时器互联的同步电路 ● 允许在指定数目的计数器周期之后更新定时器寄存器的重复计数器 ● 刹车输入信号可以将定时器输出信号置于复位状态或者一个已知状态 ● 如下事件发生时产生中断/DMA: ─ 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发) ─ 触发
[单片机]
STM32系统时钟设置,采用外部有源晶振相关配置问题
调试STM32系统时钟设置时遇到一个问题:TIM2定时1Ms,TIM2中断服务函数time++,time=100时LED状态改变。程序运行后发现LED不是按照0.1S的时间闪烁,闪烁的很慢。 查找程序发现在系统时钟初始化时,RCC_HSEConfig(RCC_HSE_Bypass); 语句配置不对,此语句解释为HSE晶振被外部时钟旁路。指将芯片内部的用于外部晶体起振和功率驱动等的部分电路和XTAL_OUT引脚断开,这时使用的外部时钟是有源时钟或者其他STM32提供的CCO输出等时钟信号,直接单线从XTAL_IN输入,这样即使外部有晶体也震荡不起来了。 因为之前用的是有源晶振,接法如下图1:HSE配置如下:RCC_HSEConfig
[单片机]
STM32和ARM的区别
这个问题大概2009年的时候很多人就在问,请看09年的时候大家给出的若干比喻: http://www.amobbs.com/forum.php?mod=viewthread&tid=3784815&highlight 以后的ARM初学者也都在问。 笔者也是菜鸟,到网上搜了搜。下面先看一张图: 这张图是我在意大利与法国合资的意法半导体公司(ST,世界几大半导体公司之一)的官网上看到的。这说明,STM32是意法半导体公司的产品。 意法半导体(ST)后面为什么要加上M32呢? 这是由于该产品使用的是ARM公司的32-bit ARM Cortex MCUs,我想这就是STM32名字的由来(个人观点哈,反正也是菜鸟笔记)。 想起
[单片机]
<font color='red'>STM32</font>和ARM的区别
STM32系列第28篇--游戏手柄
FC手柄,大致可分为两种:一种手柄插口是11针的,一种是9针的,可以直接和DR9的串口头对插。 FC手柄有10个按键(实际上只有8个): 上、下、左、右、Start、Select、A、B、A连发、B连发。 A和A连发是一个键值,而B和B连发也是一个键值,只是连发按键当你一直按下的时候,会不停的发送(方便快速按键,比如发炮弹之类的功能)。 FC手柄的控制电路,由1个8位并入串出的移位寄存器(CD4021),外加一个时基集成电路(NE555,用于连发)构成。读取手柄按键值的信息十分简单:先Latch(锁存键值),然后就得到了第一个按键值(A,下降沿采集),之后在7个Clock的作用下,依次读取其他按键的键值,总共8个按键键值。 读写时
[单片机]
<font color='red'>STM32</font>系列第28篇--游戏手柄
基于STM32设计的掌上游戏机详细开发过程
一、环境与硬件介绍 开发环境:keil5 代码风格: 寄存器风格,没有采用库函数,底层代码全部寄存器方式编写,运行效率高,注释清楚。 MCU型号: STM32F103ZET6 开发板: 正常的一块STM32开发板,带LCD插槽,带4颗独立按键。 游戏模拟器: NES游戏模拟器 LCD : ALIENTEK的3.5寸屏幕。(屏幕型号不重要,随便一款都可以的,把屏幕底层驱动代码写好,适配即可) 声音输出设备 : 采用VS1053 (SPI接口,操作方便) 游戏手柄: 支持FC游戏手柄 完成这个掌上游戏机需要使用的硬件设备不复杂,如果想要体验游戏,需要的必备硬件: 1. (必要)STM32F103系列最小系统版一个 2. (必要)L
[单片机]
基于<font color='red'>STM32</font>设计的掌上游戏机详细开发过程
理解stm32开漏输出与推挽输出
每次看到stm32的教程,都是让点led灯,对GPIO觉着很是简单。 后来者麦知club的小车机器人项目中,屡屡碰壁,是寸步难行,读ds18b20要拉底,拉高;写Oled屏要片选,要命令。 在百度里查来查去,大都模样差不多。 今天,动手在stm32l152c的discovery板上,简单的几行代码,配合万用表,终于一解迷惑。 依旧是要cubemx配置外设和时钟,while循环里代码如下: /* USER CODE BEGIN 3 */ if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) index = ~index; HAL_G
[单片机]
基于STM32模拟UART串口通信
UART工作原理 UART即通用异步收发器,是一种串行通信方式。数据在传输过程中是通过一位一位地进行传输来实现通信的,串行通信方式具有传输线少,成本底等优点,缺点是速度慢。串行通信分为两种类型:同步通信方式和异步通信方式。 但一般多用异步通信方式,主要因为接受和发送的时钟是可以独立的这样有利于增加发送与接收的灵活性。异步通信是一个字符接着一个字符传输,一个字符的信息由起始位、数据位、奇偶校验位和停止位组成。 每一个字符的传输靠起始位来同步,字符的前面一位是起始位,用下降沿通知收方开始传输,紧接着起始位之后的是数据位,传输时低位在前高位在后,字符本身由5~8位数据位组成。 数据位后面是奇偶校验位,
[单片机]
基于<font color='red'>STM32</font>模拟UART串口通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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