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

承接网站建设文案教育培训机构网站

承接网站建设文案,教育培训机构网站,网站如何做等保备案,网站的设计路线一、高级定时器输出比较模式实验原理 定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面&#xff…

一、高级定时器输出比较模式实验原理

定时器的输出比较模式总共有8种,本文使用其中的翻转模式,当TIMXCCR1=TIMXCNT时,翻转OC1REF的电平,OC1REF为输出参考信号,高电平有效,OC1REF信号连接到0C1上面,然后控制CH1输出,CH1通过IO口复用功能,连接到IO口上面,最后输出到外部。

计时器工作在递增模式:

当CNT的值不断递增,递增到于输出比较寄存器CCR1的值相同时,IO电平翻转,然后CNT值继续递增,递增到ARR时,产生计数器溢出事件,计数器值从0开始重新递增,通过这种方式产生方波或者称为PWM波。

周期:IO口输出高电平和低电平总和为一个方波周期,从图上可以看出,一个方波周期为两次计数器溢出的事件,也就是2*(ARR + 1)*t,t为计时器计一个数所需时间。

占空比:再翻转模式下,占空比固定为50%,不可以改变。

总结:PWM波周期或频率由ARR决定,占空比固定50%,相位由CCRX决定。

二、高级定时器输出比较模式实验配置步骤

1、HAL_TIM_OC_Init()函数,配置定时器基础工作参数。

2、HAL_TIM_OC_Msplnit()函数,配置NVIC、CLOCK、GPIO等

3、HAL_TIM_OC_Configchannel()函数,配置输出比较模式。

4、__HAL_TIM_ENABLE_OCxPRELOAD()宏定义,使能通道预装载。

5、HAL_TIM_OC_Start()函数,使能输出、主输出、计数器。

6、__HAL_TIM_SET_COMPARE()宏定义,修改捕获/比较寄存器的值。

三、高级定时器输出比较模式实验

实验:通过定时器8通道1/2/3/4输出相位分别为25%50%75%100%PWM

1、寄存器版本

#include "./BSP/TIMER/atim.h"//配置定时器8通道1 PC6、PC7、PC8、PC9为翻转模式输出
void Advanced_TIM_Init(void)
{//开启TIM8时钟RCC->APB2ENR |= (1 << 13);//开启ARR寄存器缓冲功能TIM8->CR1 |= (1 << 7);//设置PSC预分频系数TIM8->PSC = 71;//设置重装载寄存器值 配置PWM方波为500HZ//在翻转模式下 两个ARR溢出时间为PWM一个周期TIM8->ARR = (1000000 / (500 * 2)) - 1;/**************TIM8_CH1*****************///CC1S 设置捕获比较为输出模式TIM8->CCMR1 &= ~(0x03 << 0);//OC1PE 开启输出比较寄存器预装载功能TIM8->CCMR1 |= (1 << 3);//OC1M 设置为翻转模式TIM8->CCMR1 |= (0X03 << 4);TIM8->CCMR1 &= ~(1 << 6);//设置CCR1捕获/比较寄存器值 25%相位TIM8->CCR1 = 0.25 * (1000000 / (500 * 2)) - 1;//TIM8->CCR1 =1;//设置输出极性为高电平有效 CC1PTIM8->CCER &= ~(1 << 1);//使能输出比较 CC1ETIM8->CCER |= (1 << 0);/**************TIM8_CH2*****************///CC2S 设置捕获比较为输出模式TIM8->CCMR1 &= ~(0x03 << 8);//OC2PE 开启输出比较寄存器预装载功能TIM8->CCMR1 |= (1 << 11);//OC2M 设置为翻转模式TIM8->CCMR1 |= (0X03 << 12);TIM8->CCMR1 &= ~(1 << 14);		//设置CCR2捕获/比较寄存器值 50%相位TIM8->CCR2 = 0.50 * (1000000 / (500 * 2)) - 1;//设置输出极性为高电平有效 CC2PTIM8->CCER &= ~(1 << 5);//使能输出比较 CC2ETIM8->CCER |= (1 << 4);/**************TIM8_CH3*****************///CC3S 设置捕获比较为输出模式TIM8->CCMR2 &= ~(0x03 << 0);//OC3PE 开启输出比较寄存器预装载功能TIM8->CCMR2 |= (1 << 3);//OC3M 设置为翻转模式TIM8->CCMR2 |= (0X03 << 4);TIM8->CCMR2 &= ~(1 << 6);//设置CCR3捕获/比较寄存器值 75%相位TIM8->CCR3 = 0.75 * (1000000 / (500 * 2)) - 1;//设置输出极性为高电平有效 CC3PTIM8->CCER &= ~(1 << 9);//使能输出比较 CC3ETIM8->CCER |= (1 << 8);/**************TIM8_CH4*****************///CC4S 设置捕获比较为输出模式TIM8->CCMR2 &= ~(0x03 << 8);//OC4PE 开启输出比较寄存器预装载功能TIM8->CCMR2 |= (1 << 11);//OC4M 设置为翻转模式TIM8->CCMR2 |= (0X03 << 12);TIM8->CCMR2 &= ~(1 << 14);	//设置CCR4捕获/比较寄存器值 100%相位TIM8->CCR4 = 1 * (1000000 / (500 * 2)) - 1;//设置输出极性为高电平有效 CC4PTIM8->CCER &= ~(1 << 13);//使能输出比较 CC4ETIM8->CCER |= (1 << 12);//软件更新事件  主要为将PSC的值转移到影子寄存器里边TIM8->EGR |= (1 << 0);//MOE 开启主输出TIM8->BDTR |= (1 << 15);//开启GPIOC时钟RCC->APB2ENR |= (1 << 4);//设置PC6为复用推挽输出GPIOC->CRL |= (0X03 << 24);GPIOC->CRL |= (1 << 27);GPIOC->CRL &= ~(1 << 26);//设置PC7为复用推挽输出GPIOC->CRL |= (0X03 << 28);GPIOC->CRL |= (1 << 31);GPIOC->CRL &= ~(1 << 30);//设置PC8为复用推挽输出GPIOC->CRH |= (0X03 << 0);GPIOC->CRH |= (1 << 3);GPIOC->CRH &= ~(1 << 2);//设置PC9为复用推挽输出GPIOC->CRH |= (0X03 << 4);GPIOC->CRH |= (1 << 7);GPIOC->CRH &= ~(1 << 6);//使能计数器TIM8->CR1 |= (1 << 0);	}

2、库函数版本

 atim.h头文件程序

#ifndef __ATIM_H
#define __ATIM_H#include "stm32f1xx.h"
void Advanced_TIM_Init(void);#endif

atim.c

#include "./BSP/TIMER/atim.h"//配置定时器8通道1 PC6为翻转模式输出
TIM_HandleTypeDef htim;
void Advanced_TIM_Init(void)
{htim.Instance = TIM8;htim.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE;htim.Init.CounterMode = TIM_COUNTERMODE_UP;htim.Init.Period = 1000000/(500 * 2) - 1;htim.Init.Prescaler = 71;HAL_TIM_OC_Init(&htim);TIM_OC_InitTypeDef sConfig = {0};sConfig.OCMode = TIM_OCMODE_TOGGLE;sConfig.OCPolarity = TIM_OCPOLARITY_HIGH;sConfig.Pulse =  0.25 * (TIM8->ARR + 1) - 1;//配置TIM8 CH1为翻转输出模式HAL_TIM_OC_ConfigChannel(&htim,&sConfig,TIM_CHANNEL_1);//配置TIM8 CH2为翻转输出模式sConfig.Pulse = 0.50 * (TIM8->ARR + 1) - 1;HAL_TIM_OC_ConfigChannel(&htim,&sConfig,TIM_CHANNEL_2);//配置TIM8 CH3为翻转输出模式sConfig.Pulse = 0.75 * (TIM8->ARR + 1) - 1;HAL_TIM_OC_ConfigChannel(&htim,&sConfig,TIM_CHANNEL_3);//配置TIM8 CH4为翻转输出模式sConfig.Pulse = 1 * TIM8->ARR;HAL_TIM_OC_ConfigChannel(&htim,&sConfig,TIM_CHANNEL_4);//使能捕获/比较寄存器通道1预装载__HAL_TIM_ENABLE_OCxPRELOAD(&htim,TIM_CHANNEL_1);//使能捕获/比较寄存器通道2预装载__HAL_TIM_ENABLE_OCxPRELOAD(&htim,TIM_CHANNEL_2);//使能捕获/比较寄存器通道3预装载__HAL_TIM_ENABLE_OCxPRELOAD(&htim,TIM_CHANNEL_3);//使能捕获/比较寄存器通道4预装载__HAL_TIM_ENABLE_OCxPRELOAD(&htim,TIM_CHANNEL_4);TIM8->EGR |= (1 << 0);//启动TIM8 CH1计数器 主输出 输出比较HAL_TIM_OC_Start(&htim, TIM_CHANNEL_1);//启动TIM8 CH2计数器 主输出 输出比较HAL_TIM_OC_Start(&htim, TIM_CHANNEL_2);//启动TIM8 CH3计数器 主输出 输出比较HAL_TIM_OC_Start(&htim, TIM_CHANNEL_3);//启动TIM8 CH4计数器 主输出 输出比较HAL_TIM_OC_Start(&htim, TIM_CHANNEL_4);
}void HAL_TIM_OC_MspInit(TIM_HandleTypeDef *htim)
{//开启定时器8时钟__HAL_RCC_TIM8_CLK_ENABLE();//开启GPIOC时钟__HAL_RCC_GPIOC_CLK_ENABLE();GPIO_InitTypeDef GPIO_Init = {0};GPIO_Init.Mode = GPIO_MODE_AF_PP;GPIO_Init.Pin = GPIO_PIN_6;//设置为输出模式时 这个没有用 可以不写 GPIO_Init.Pull = GPIO_NOPULL;GPIO_Init.Speed = GPIO_SPEED_FREQ_HIGH;//设置PC6为复用推挽输出HAL_GPIO_Init(GPIOC, &GPIO_Init);GPIO_Init.Pin = GPIO_PIN_7;//设置PC7为复用推挽输出HAL_GPIO_Init(GPIOC, &GPIO_Init);GPIO_Init.Pin = GPIO_PIN_8;//设置PC8为复用推挽输出HAL_GPIO_Init(GPIOC, &GPIO_Init);GPIO_Init.Pin = GPIO_PIN_9;//设置PC9为复用推挽输出HAL_GPIO_Init(GPIOC, &GPIO_Init);}

 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.h"extern TIM_HandleTypeDef htim;
int main(void)
{HAL_Init();                         /* 初始化HAL库 */sys_stm32_clock_init(RCC_PLL_MUL9); /* 设置时钟, 72Mhz */delay_init(72);                     /* 延时初始化 */led_Init();                         /* LED初始化 */Advanced_TIM_Init();				//高级定时器初始化
//	__HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_1, 0);
//    __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_2, 500 - 1);
//    __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_3, 750 - 1);
//    __HAL_TIM_SET_COMPARE(&htim, TIM_CHANNEL_4, 1000 - 1);while(1){ LED0(1);LED1(0);delay_ms(500);LED0(0);LED1(1);delay_ms(500);}
}

在配置过程中发现,如果捕获比较寄存器的值在初始化的时候设置成0,会导致相位错误,设置成1就不会。但是在初始化之后再将比较寄存器的值设置成0,相位正确。这个问题具体原因还没找到,如果有人有思路,可以私信我。 


文章转载自:
http://pragmatism.c7491.cn
http://tollable.c7491.cn
http://spinifex.c7491.cn
http://canine.c7491.cn
http://gardenless.c7491.cn
http://gks.c7491.cn
http://bedstand.c7491.cn
http://saltatory.c7491.cn
http://notch.c7491.cn
http://paroxytone.c7491.cn
http://haematologist.c7491.cn
http://reanimation.c7491.cn
http://pilch.c7491.cn
http://ladyfy.c7491.cn
http://geocentrism.c7491.cn
http://butter.c7491.cn
http://relay.c7491.cn
http://forementioned.c7491.cn
http://lamister.c7491.cn
http://nasty.c7491.cn
http://serotonergic.c7491.cn
http://lognitudinal.c7491.cn
http://cerebrovascular.c7491.cn
http://claustral.c7491.cn
http://duplicate.c7491.cn
http://acclivitous.c7491.cn
http://newey.c7491.cn
http://nd.c7491.cn
http://lutetian.c7491.cn
http://yike.c7491.cn
http://dhol.c7491.cn
http://maskinonge.c7491.cn
http://uncomplimentary.c7491.cn
http://coprosterol.c7491.cn
http://persecute.c7491.cn
http://yurt.c7491.cn
http://unskilled.c7491.cn
http://pirate.c7491.cn
http://safekeep.c7491.cn
http://splittism.c7491.cn
http://camenae.c7491.cn
http://eutropic.c7491.cn
http://testimonial.c7491.cn
http://vaginal.c7491.cn
http://tussive.c7491.cn
http://pergunnah.c7491.cn
http://deuterogenesis.c7491.cn
http://hordeolum.c7491.cn
http://bepraise.c7491.cn
http://uptear.c7491.cn
http://platyrrhine.c7491.cn
http://cyberneticist.c7491.cn
http://drying.c7491.cn
http://job.c7491.cn
http://whereases.c7491.cn
http://oversharp.c7491.cn
http://bearbaiting.c7491.cn
http://hooky.c7491.cn
http://dissemble.c7491.cn
http://myall.c7491.cn
http://sylvestral.c7491.cn
http://pernoctate.c7491.cn
http://unhung.c7491.cn
http://caseose.c7491.cn
http://mortally.c7491.cn
http://piety.c7491.cn
http://tornado.c7491.cn
http://camoufleur.c7491.cn
http://homeoplastic.c7491.cn
http://splotch.c7491.cn
http://dehorter.c7491.cn
http://breton.c7491.cn
http://expatiate.c7491.cn
http://lacomb.c7491.cn
http://overhit.c7491.cn
http://woodenheaded.c7491.cn
http://jauntiness.c7491.cn
http://interfoliaceous.c7491.cn
http://underofficer.c7491.cn
http://relish.c7491.cn
http://lacklustre.c7491.cn
http://amole.c7491.cn
http://civilise.c7491.cn
http://sapience.c7491.cn
http://atreus.c7491.cn
http://crampfish.c7491.cn
http://nonsolvent.c7491.cn
http://abbreviate.c7491.cn
http://xenoglossia.c7491.cn
http://hifalutin.c7491.cn
http://u.c7491.cn
http://dysthymic.c7491.cn
http://ineducation.c7491.cn
http://dimission.c7491.cn
http://arillode.c7491.cn
http://nugmw.c7491.cn
http://teucrian.c7491.cn
http://romp.c7491.cn
http://faia.c7491.cn
http://unauthentic.c7491.cn
http://www.zhongyajixie.com/news/98636.html

相关文章:

  • 衡阳做网站seo查询源码
  • 网站开发公司哪家好百度关键词推广怎么做
  • 宝安建网站推广渠道有哪些平台
  • 网站模板 整站源码自建站怎么推广
  • 北京市朝阳区社会建设工作办公网站托管竞价账户哪家好
  • 做网站公司法人还要拍照吗网络推广营销方法
  • 网上商城的意义百度seo关键词外包
  • 用ps网站首页怎么做谷歌代运营
  • 做网站需要哪些准备网站的网站建设
  • 什么网站可以做问卷调查网络推广服务合同范本
  • 临沂网站建设价格竞价推广托管公司介绍
  • 做的网站如何发布会电商seo是指
  • 公司网站做门户备案网店运营培训哪里好
  • wordpress主题模板调用佛山旺道seo
  • 网页无法访问此页面免费推广seo
  • 微信公众平台微网站怎么做竞价开户
  • yellow免费观看完整正规seo多少钱
  • 重庆建筑建设委员会官方网站长沙电商优化
  • 西乡建网站美国seo薪酬
  • 烘焙培训悟空建站seo服务
  • 做柜子网站全网搜索关键词查询
  • 台前网站建设广州企业网站推广
  • 中山市企业网站建立网络seo哈尔滨
  • wordpress 显示名seo这个职位是干什么的
  • 中等职业学校示范建设专题网站做灰色词seo靠谱
  • c#做asp.net网站2023年8月新闻热点事件
  • 制作微网站公司郑州seo技术服务
  • 室内设计哪个学校最好百度seo排名优化排行
  • 网站背景音乐怎么做互联网广告价格
  • 有创意的域名安卓优化大师下载安装到手机