当前位置: 首页 > news >正文

沧州市东光建设局 网站网站的内链

沧州市东光建设局 网站,网站的内链,做网站推广的方法,wordpress 免费商城一、互补输出简介 互补输出#xff1a;OCx输出高电平#xff0c;则互补通道OCxN输出低电平。OCx输出低电平#xff0c;则互补通道OCxN输出高电平。 带死区控制的互补输出#xff1a;OCx输出高电平时#xff0c;则互补通道OCxN过一会再输出输出低电平。这个时间里输出的电…一、互补输出简介 互补输出OCx输出高电平则互补通道OCxN输出低电平。OCx输出低电平则互补通道OCxN输出高电平。 带死区控制的互补输出OCx输出高电平时则互补通道OCxN过一会再输出输出低电平。这个时间里输出的电平为无效电平。 二、带死区控制的互补输出应用H桥 在H桥中间的是电动机 电流从左边流向右边为正转从右边流向左边为反转。正转的时候Q1和Q4导通反转的时候Q2和Q3导通。4个三极管都是NPN型三极管都需要高电平才能导通。 Q1和Q3连接的OC1Q2和Q3连接的是互补通道OC1N。当OC1输出高电平时Q1和Q4导通电机正转OC1N输出低电平Q2和Q3都截止。当OC1N输出高电平时Q2和Q3导通电机反转此时OC1输出低电平Q1和Q4截止。 如果输出通道OC1和互补输出通道OC1N都为有效电平在这个图里边有效电平为高电平都为有效电平则短路。 由于元器件是有延迟特性所以需要加上死区时间控制。这个电路图的无效电平为低电平。 三、捕获/比较通道的输出部分(通道1至3) 1、OC1RE为输出参考信号高电平有效。 2、TIMx_CCMR1的OC1M设置输出比较模式在F1系列有8种比较模式。 3、 ETRF信号设置了OC1CE为则ETRF信号来的时候OC1REF会被强制清0。 4、配置TIMx_CCER寄存器的CC1E和CC1NE位来设置输出通道使能和输出互补通道使能。当使能输出通道关闭互补输出通道则直接走死区发生器上面那个线经过输出极性选择器从OC1输出。当关闭输出通道使能互补输出通道则经过互补输出极性选择器从OC1N输出。 死区输出同时使能输出通道和互补输出通带OC1REF信号经过死区发生器然后分别经过各自的极性选择器来到OC1和OC1N。 MOE位高级定时器的主输出控制想输出。必须置1否则两个通道都无法输出。 补充 高级定时的刹车功能寄存器BDTR里边有一个OSSR位对用在运行状态MOE 1)时可以控制输出和互补输出通道电平。 手册种给出如下表格 重点看红色部分当OSSR位设置为1时如果只使能了输出通道或者互补输出通道中的任意一个那个另一个通道会输出无效电平。当OSSR位设置为0的时候另一个通道都是输出0。这个对于学习电机控制的时候有用如果程序不设置这位对于想使用一个定时器的互补输出通道控制电机是不行的因为另一个通道一直输出0。 sBreakDeadTimeConfig.OffStateRunModeTIM_OSSR_ENABLE; 如果设置了这位另一个通道会根据你设置的有效电平来输出无效电平。 sConfig.OCNPolarity TIM_OCNPOLARITY_LOW;     sConfig.OCPolarity TIM_OCPOLARITY_LOW; 下面这俩是控制在刹车输入时MOE位会被自动清零然后输出通道和互补输出通道根据空闲状态输出电平但是要注意如果你两个通道都设置的是低电平有效那下面这个设置就是无效的因为硬件不允许两个通道同时输出有效电平他会同时输出高电平。但是你设置的是高电平有效下面这个设置会使两个通道都输出低电平也就是同时输出无效电平。 sConfig.OCIdleState TIM_OCIDLESTATE_RESET;     sConfig.OCNIdleState TIM_OCNIDLESTATE_RESET; 四、死区时间计算 1、确定tDTS的值 其中CKD位在TIMx_CR1寄存器里边设置Ft为定时器时钟频率F1系列就是72Mhz。 2、判断DTG[7:5]选择计算公式在TIMx_BDTR寄存器设置。 3、带入选择的公式计算。 五、刹车(断路)功能 1、使能刹车功能将TIMx_BDTR的BKE位置1刹车输入信号极性由BKP位设置 将TIMx_BKIN引脚复用为刹车功能刹车信号经过极性选择后来到或门。BI为刹车中断。 使能刹车功能后由TIMx_BDTR的MOE、OSSI、OSSR位TIMx_CR2的OISx、OISxN位TIMx_CCER的CCxE、CCxNE位控制OCx和OCxN输出状态 无论何时OCx和OCxN输出都不能同时处在有效电平由硬件强制设置。 2、发生刹车后会怎么样 MOE位被清零OCx和OCxN为无效、空闲或复位状态(OSSI位选择)MOE为0被称为空闲模式为1被称为运行模式。OCx和OCxN的状态由相关控制位状态决定当使用互补输出时根据情况自动控制输出电平参考参考手册使用刹车(断路)功能小节BIF位置1如果使能了BIE位还会产生刹车中断如果使能了TDE位会产生DMA请求如果AOE位置 1在下一个 更新事件UEV时MOE位被自动置 1 从图中可以看出当刹车信号来时MOE位会被置0同时输出通道电平由OIS1位决定OIS1为1则输出高电平OIS1为0则输出低电平。 1、设置输出通道极性为高电平有效当OCxREF下降沿来的时候没有延迟当上升沿来的时候需要加死区延迟。当刹车信号来的时候OISx为0输出低电平低电平不是有效输出电平所以没有延迟。 设置互补输出通道为高电平有效在OCxREF下降沿来的时候OCxN需要加死区延迟在OCxREF上升沿来的时候OCxN变为低电平不需要加死区延迟。刹车信号来的时候设置的OCSxN为1为有效电平需要加死区延迟。 2、设置输出通道极性为高电平有效当OCxREF下降沿来的时候不需要死区延迟当上升沿来的时候需要加死区延迟。当刹车信号来的时候OISx为1输出高电平高电平是有效输出电平需要加死区延迟。 设置互补输出通道为低电平有效在OCxREF下降沿来的时候OCxN需要加死区延迟在OCxREF上升沿来的时候OCxN变为高电平不需要加死区延迟。刹车信号来的时候设置的OCSxN为1为无效电平不需要加死区延迟。 3、互补输出没有开启设置输出通道为高电平有效输出与OCxREF一样刹车信号来的时候OCSx为0为无效电平不需要死区延迟。 互补输出通道没有开启设置的设置互补输出通道为高电平有效同时OCSxN为1高电平是有效输出电平需要加死区延迟。 4、互补输出没有开启设置输出通道为高电平有效输出与OCxREF一样刹车信号来的时候OCSx为1为有效电平需要死区延迟。 互补输出通道没有开启设置的设置互补输出通道为高电平有效同时OCSxN为0低电平不是有效输出电平不需要加死区延迟。 4、互补输出没有开启设置输出通道为高电平有效输出与OCxREF一样刹车信号来的时候OCSx为1为有效电平需要死区延迟。 互补输出通道没有开启设置的设置互补输出通道为高电平有效同时OCSxN为0低电平不是有效输出电平不需要加死区延迟。 六、高级定时器互补输出带死区控制实验配置步骤 1、HAL_TIM_PWM_Init()函数配置定时器基础工作参数。这个函数与HAL_TIM_Base_init()函数功能是一样的。 2、HAL_TIM_PWM_MspInit()配置NVIC、CLOCK、GPIO等。 3、HAL_TIM_PWM _Configchannel()函数配置PWM模式/比较值。 4、HAL_TIMEx_ConfigBreakDeadTime()函数配置刹车功能、死区时间等。 5、HAL_TIM_PWM _Start()函数使能输出、主输出、计数器。 6、HAL_TIM_PWMN _Start()函数使能互补输出、主输出、计数器。 七、高级定时器互补输出带死区控制实验 1、寄存器版本 #include ./BSP/TIMER/atim.h//配置定时器1的通道1 和 通道1互补输出 PE8 PE9 void Advanced_TIM_Init(void) {//开启定时器1时钟RCC-APB2ENR | (1 11);//设置CKD分频系数为4TIM1-CR1 | (1 9);TIM1-CR1 ~(1 8);//设置ARR寄存器缓冲功能TIM1-CR1 | (1 7);//注意硬件不允许同时输出有效电平 有效电平在CCxP和CCxNP设置//设置OIS1 输出空闲状态//TIM1-CR2 | (1 8);TIM1-CR2 ~(1 8);//设置OIS1N 互补输出空闲状态TIM1-CR2 | (1 9);//设置CC1S模式为输出 00 TIM1-CCMR1 ~(0X03 0);//OC1M 设置为PWM1模式 110 TIM1-CCMR1 | (0X03 5);TIM1-CCMR1 ~(1 4);//CC1NP 互补输出高电平有效TIM1-CCER ~(1 3);//CC1NE 开启互补输出比较使能TIM1-CCER | (1 2);//CC1P 输出高电平有效TIM1-CCER ~(1 1);//CC1E开启输出比较使能TIM1-CCER | (1 0);//设置预分频系数为71TIM1-PSC 71;//设置预装载值为999 TIM1-ARR 999;//设置CCR1输出比较值 控制占空比TIM1-CCR1 0.3 * (TIM1-ARR 1) - 1;//MOE 开启主输出TIM1-BDTR | (1 15);//AOE 开启刹车失效之后MOE自动恢复TIM1-BDTR | (1 14);//刹车极性高电平有效TIM1-BDTR | (1 13);//开启刹车使能TIM1-BDTR | (1 12);//CKD分频系数设置为4 72M/4 取倒数为Tdts时间 //然后用100 成这个时间为死区延迟时间 5.56us//设置DTG死区延时为100 TIM1-BDTR | 100;TIM1-EGR | (1 0);//开启GPIOE1时钟RCC-APB2ENR | (1 6);//设置PE8为复用推挽输出GPIOE-CRH | (0X03 0);GPIOE-CRH | (1 3);GPIOE-CRH ~(1 2);//设置PE9为复用推挽输出GPIOE-CRH | (0X03 4);GPIOE-CRH | (1 7);GPIOE-CRH ~(1 6);//设置PE15为复用推挽输出GPIOE-CRH | (0X03 28);GPIOE-CRH | (1 31);GPIOE-CRH ~(1 30);//使能AFIO时钟RCC-APB2ENR | (1 0);//设置TIM1完全重映射 将CH1映射到PE9 CH1N映射到PE8 BKIN映射到PE15上AFIO-MAPR | (0x03 6);//使能计数器TIM1-CR1 | (1 0); }注意配置过程中发现刹车输入使能位和刹车极性位设置无效但是debug的时候通过断点设置便可以全速运行就不可以  问题还没有找到有思路的小伙伴可以私信我。 2、库函数版本 atim.h头文件  #ifndef __ATIM_H #define __ATIM_H#include stm32f1xx.h void Advanced_TIM_Init(void); #endif atim.c源文件 #include ./BSP/TIMER/atim.hTIM_HandleTypeDef htim;void Advanced_TIM_Init(void) {htim.Instance TIM1;htim.Init.AutoReloadPreload TIM_AUTORELOAD_PRELOAD_ENABLE;htim.Init.ClockDivision TIM_CLOCKDIVISION_DIV4;htim.Init.CounterMode TIM_COUNTERMODE_UP;htim.Init.Period 999;htim.Init.Prescaler 71;//配置PWM输出HAL_TIM_PWM_Init(htim);TIM_OC_InitTypeDef sConfig {0};sConfig.OCIdleState TIM_OCIDLESTATE_SET;sConfig.OCMode TIM_OCMODE_PWM1;sConfig.OCNIdleState TIM_OCNIDLESTATE_RESET;sConfig.OCNPolarity TIM_OCNPOLARITY_HIGH;sConfig.OCPolarity TIM_OCPOLARITY_HIGH;sConfig.Pulse 499;HAL_TIM_PWM_ConfigChannel(htim,sConfig,TIM_CHANNEL_1);TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig {0};sBreakDeadTimeConfig.AutomaticOutput TIM_AUTOMATICOUTPUT_ENABLE;sBreakDeadTimeConfig.BreakPolarity TIM_BREAKPOLARITY_HIGH;sBreakDeadTimeConfig.BreakState TIM_BREAK_ENABLE;sBreakDeadTimeConfig.DeadTime 100;sBreakDeadTimeConfig.OffStateIDLEMode TIM_OSSI_DISABLE;sBreakDeadTimeConfig.OffStateRunModeTIM_OSSR_DISABLE;//刹车输入及死区时间配置HAL_TIMEx_ConfigBreakDeadTime(htim,sBreakDeadTimeConfig);HAL_TIM_PWM_Start(htim,TIM_CHANNEL_1);HAL_TIMEx_PWMN_Start(htim,TIM_CHANNEL_1); }void HAL_TIM_PWM_MspInit(TIM_HandleTypeDef *htim) {//开启定时器1时钟__HAL_RCC_TIM1_CLK_ENABLE();//开启GPIOE时钟__HAL_RCC_GPIOE_CLK_ENABLE();GPIO_InitTypeDef GPIO_Init {0};GPIO_Init.Mode GPIO_MODE_AF_PP;GPIO_Init.Pin GPIO_PIN_8;GPIO_Init.Speed GPIO_SPEED_FREQ_HIGH;//初始化PE8为复用推挽输出HAL_GPIO_Init(GPIOE, GPIO_Init);//初始化PE9为复用推挽输出GPIO_Init.Pin GPIO_PIN_9;HAL_GPIO_Init(GPIOE, GPIO_Init);GPIO_Init.Mode GPIO_MODE_INPUT;GPIO_Init.Pull GPIO_PULLDOWN;GPIO_Init.Pin GPIO_PIN_15;HAL_GPIO_Init(GPIOE, GPIO_Init);//开启AFIO时钟__HAL_RCC_AFIO_CLK_ENABLE();//开启TIM1完全重映射__HAL_AFIO_REMAP_TIM1_ENABLE(); }main.c源文件  #include ./SYSTEM/sys/sys.h #include ./SYSTEM/usart/usart.h #include ./SYSTEM/delay/delay.h #include ./BSP/LED/led.h #include ./BSP/TIMER/atim.hint main(void) {HAL_Init(); /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */delay_init(72); /* 延时初始化 */led_Init(); /* LED初始化 */Advanced_TIM_Init();while(1){ LED0(1);LED1(0);delay_ms(500);LED0(0);LED1(1);delay_ms(500);} }
http://www.yayakq.cn/news/3314/

相关文章:

  • 北京网站开发外包公司九江便宜做网站
  • 佛山营销网站建设多少钱psd网站首页图片
  • 事业单位 网站备案个人网站做博客还是做论坛
  • 外包一个企业网站多少钱网站建设团队哪个最好
  • 网站开发 高职课本科技型中小企业服务平台登录
  • 专做专业课视频的网站高级营销型网站建设
  • 成都网站制作公司定制江油网站制作
  • 福州外贸建站查询网页怎么制作
  • 南通网站建设seo营销最好的网站建设公司
  • 河源市seo网站设计微博推广效果怎么样
  • 设计网站排行织梦响应式网站模板
  • 安徽省建设监理协会网站邯郸做网站找谁
  • vps如何做网站步骤商标图案参考
  • 为什么要建设医院网站吉林商城网站建设
  • 物流如何做网站我想做一个网站怎么做的
  • 网站开发及维护费用wordpress新数据库
  • 怎么在百度上制作自己的网站WordPress订阅下载插件
  • 如何跟客户沟通网站建设简述网站设计步骤
  • 济宁网站建设 果壳科技郧阳网站建设
  • 网站导航栏制作镇江市建设审图网站
  • 广元做网站站排名永康高端网站建设
  • 盐城网站建设与网页制作网站建设文件夹结构
  • 商城网站设计目标南宁百度网站公司吗
  • 做网站找 汇搜网络书籍网站建设的目的
  • 网站怎么制作 优帮云网站模板 商标
  • 曰照网站小程序建设wordpress教程凌风
  • 个人网站用什么开发网站开发河南
  • 郑州网站建设工资wordpress常见问题
  • 做调查的网站知乎WordPress提交留言
  • 好f123网站ppt成品免费下载的网站