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

外贸模版网站武汉seo首页优化公司

外贸模版网站,武汉seo首页优化公司,myphoto wordpress 国外,宁波网站建设服务报价接线图: 这里将正极接到PA0引脚上,负极接到GND,这样就高电平点亮LED,低电平熄灭。 占空比越大,LED越亮,占空比越小,LED越暗 PWM初始化配置 输出比较函数介绍: 用这四个函数配置输…

接线图:

这里将正极接到PA0引脚上,负极接到GND,这样就高电平点亮LED,低电平熄灭。

占空比越大,LED越亮,占空比越小,LED越暗

PWM初始化配置

输出比较函数介绍:

用这四个函数配置输出比较模式,四个函数对应四个输出比较单元,这个函数使用结构体初始化输出比较单元的,这四个函数很重要需要掌握

void TIM_OC1Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC2Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC3Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);
void TIM_OC4Init(TIM_TypeDef* TIMx, TIM_OCInitTypeDef* TIM_OCInitStruct);

这个是用来输出比较结构体赋一个默认值的

void TIM_OCStructInit(TIM_OCInitTypeDef* TIM_OCInitStruct);

功能运行时更改参数的函数

用来配置强制输出模式的,如果想要在运行中暂停输出波形并且强制输出高或低电平 ,可以用下面函数,不过用的不多,因为强制输出高电平与占空比设置100%是一样的,输出低电平与占空比设置0%是一样的。

void TIM_ForcedOC1Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC2Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC3Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);
void TIM_ForcedOC4Config(TIM_TypeDef* TIMx, uint16_t TIM_ForcedAction);

这四个函数是用来配置CCR寄存器的预装功能的,预装功能就是影子寄存器,就是写入的值不会立即生效,而是在更新事件才会生效(一般不用这些函数)

void TIM_OC1PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC2PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC3PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);
void TIM_OC4PreloadConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPreload);

这四个函数是用来配置快速使能的(用的也不多)

void TIM_OC1FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC2FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC3FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);
void TIM_OC4FastConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCFast);

在手册里,外部事件时清除REF信号有介绍。

void TIM_ClearOC1Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC2Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC3Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);
void TIM_ClearOC4Ref(TIM_TypeDef* TIMx, uint16_t TIM_OCClear);

 这些是单独设置输出比较的极性的,这里带N的就是高级定时器里互补通道的配置,OC4没有互补通道所以就没有OC4N的函数

void TIM_OC1PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC1NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC2PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC2NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC3PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);
void TIM_OC3NPolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCNPolarity);
void TIM_OC4PolarityConfig(TIM_TypeDef* TIMx, uint16_t TIM_OCPolarity);

下面两个是用来单独修改输出使能参数的

void TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx);
void TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCxN);

选择输出比较模式,这个是用来单独更改输出比较模式的函数

void TIM_SelectOCxM(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_OCMode);

下面四个是用来单独更改CCR寄存器值的函数,这四个函数比较重要,我们在运行的时候,更改占空比就需要用到这四个函数

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);
void TIM_SetCompare2(TIM_TypeDef* TIMx, uint16_t Compare2);
void TIM_SetCompare3(TIM_TypeDef* TIMx, uint16_t Compare3);
void TIM_SetCompare4(TIM_TypeDef* TIMx, uint16_t Compare4);

这个函数仅高级定时器使用在使用高级定时器输出PWM时,需要调用这个函数,使能主输出,否则PWM将不能正常输出

void TIM_CtrlPWMOutputs(TIM_TypeDef* TIMx, FunctionalState NewState);

根据结构图配置:

1.定义结构体变量

定义GPIO与TIM所需的结构体变量

//-----------------------------定义结构体变量------------------------------TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//定义TIMBase结构体变量TIM_OCInitTypeDef TIM_OCInitStructure;		    //定义TIMOC结构体变量GPIO_InitTypeDef GPIO_InitStructure;			    //定义GPIO结构体变量
//-----------------------------定义结构体变量------------------------------

2.RCC开启时钟

把我们要用到的TIM外设和GPIO外设的时钟打开

3.配置时基单元

包括前面的时钟源选择、PSC预分频器、CNT计数器、ARR自动重装器

//-----------------------------配置时基单元---------------------------------TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1 ;		 //时钟分频TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //计数器模式  这里选择向上计数TIM_TimeBaseInitStructure.TIM_Period = 100 - 1;	     //周期 就是ARR自动重装器的值TIM_TimeBaseInitStructure.TIM_Prescaler = 720 - 1;		 //是PSC预分频器的值TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;	 //重复计数器的值(这个是高级寄存器才有的,这里不需要用直接给0)TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);	 //TIM初始化//-----------------------------配置时基单元---------------------------------

4.配置输出比较单元

里面CCR的值、输出比较模式、极性选择、输出使能这些参数(用结构体统一配置)

//-----------------------------配置输出比较单元-----------------------------TIM_OCStructInit(&TIM_OCInitStructure); //给结构体赋一个初始值,因为我们还有其他的变量没有赋值TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;		//设置输出比较模式,这里选择PWM模式1TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //设置输出比较的极性,这里选择高极性,有效电平是高电平时输出高电平	 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //设置输出使能TIM_OCInitStructure.TIM_Pulse = 50;					        //设置CCR值TIM_OC1Init(TIM2, &TIM_OCInitStructure);//-----------------------------配置输出比较单元-----------------------------

5.配置GPIO

把PWM对应的GPIO口,初始化为复用推挽输出的配置

//-----------------------------配置GPIO初始化------------------------------GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;		 //配置引脚GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度GPIO_Init(GPIOA,&GPIO_InitStructure);//GPIO初始化//-----------------------------配置GPIO初始化------------------------------

6.运行控制

启动计数器,输出PWM

TIM_Cmd(TIM2,ENABLE);//启动定时器

配置一个频率为 1KHz,占空比为50%的PWM波形

这里的ARR、PSC与CCR决定占空比

公式:

CK_PSC为72MHz,因为系统时钟频率为72MHz.

功能实现:

实现呼吸灯效果需要不断改变占空比的值,需要调用

void TIM_SetCompare1(TIM_TypeDef* TIMx, uint16_t Compare1);

函数,在运行时不断改变占空比的值。

功能函数:

void PWM_SetComPer(uint16_t Compare)
{	TIM_SetCompare1(TIM2,Compare);}

主函数:

#include "PWM.h"
int main(void)
{LED_Init();OLED_Init();PWM_Init();uint16_t i = 0;while(1){for(i = 0; i <= 100; i++){PWM_SetComPer(i);Delay_ms(10);}for(i = 0; i <= 100; i++){PWM_SetComPer(100-i);Delay_ms(10);}}	}

http://www.hkea.cn/news/1825/

相关文章:

  • 帮人家做家务的网站个人在线做网站免费
  • 福田专业网站建设公司百度代理
  • 去哪找做网站的客户百度小说风云榜总榜
  • 外贸商城网站建设网站快速排名推荐
  • 揭阳市榕城区建设局网站百度文库首页官网
  • 凡科网靠谱吗seo技术服务外包
  • 做商城网站用什么框架凌哥seo技术博客
  • 网站建设的重要性意义上海网络营销seo
  • 网站首页设计与制作长沙网站优化效果
  • 惠州做网站建设线上线下一体化营销
  • 如何做一份网站推广方案百度广告费用
  • 仿牌网站容易被攻击吗百度竞价怎么开户
  • 有什么网站做图片宣传海报北京seo优化厂家
  • 给了几张图让做网站百度关键词优化软件
  • 网站宣传文案有哪些云优化
  • 网站建设与制作总结怎么建立网站卖东西
  • 六枝网站建设百度平台营销软件
  • wordpress微笑信息授权seo如何优化关键词上首页
  • wordpress 多媒体文件夹北京seo运营推广
  • 网站开发人员 组织架构免费广告网
  • 网站更新怎么做社交网络推广方法有哪些
  • 访问不了服务器的网站企业网站推广方案设计
  • 河南企业建站系统信息优化大师tv版
  • 建个网站有收创建网站的基本步骤
  • 学校网站建设规划书什么是百度指数
  • 邵阳做网站价格自己怎么搭建网站
  • 数据系统网站建设必要性太原seo排名优化软件
  • 金坛网站优化网址缩短在线生成器
  • 做网站的难点合肥疫情最新消息
  • 上海做网站报价营销型网站建设要点