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

云南大学做行测的网站补习班

云南大学做行测的网站,补习班,org后缀做网站行,怎么免费创建自己的网站PWM PWM (Pulse Width Modulation) 是一种模拟信号电平的方法,它通过使用数字信号(通常是方波)来近似地表示模拟信号。在PWM中,信号的占空比(即高电平时间占整个周期的比例)被用来控制平均输出电压或电流。…

PWM

PWM (Pulse Width Modulation) 是一种模拟信号电平的方法,它通过使用数字信号(通常是方波)来近似地表示模拟信号。在PWM中,信号的占空比(即高电平时间占整个周期的比例)被用来控制平均输出电压或电流。

PWM在许多应用中都非常重要,特别是那些需要精确控制模拟信号的应用,如电机控制、LED亮度调节、音频放大器等。以下是PWM的一些关键特点和优势:

  1. 高效能:PWM允许在开关电源中精确控制能量传输,从而提高效率。
  2. 简单实现:PWM可以通过数字电路或微控制器轻松实现。
  3. 减少功耗:在需要调节功率的应用中,PWM可以确保只有必要的能量被传输,从而减少了不必要的功耗。
  4. 降低噪声:与模拟控制相比,PWM可以减少由模拟电路引起的噪声。
  5. 精确控制:通过改变PWM信号的占空比,可以非常精确地控制输出电压或电流。

在电机控制中,PWM通常用于控制电机的速度和方向。通过改变PWM信号的占空比,可以精确地控制电机的平均电压,从而控制电机的速度和扭矩。

在LED亮度调节中,PWM也被广泛使用。通过改变PWM信号的占空比,可以控制LED的平均电流,从而控制LED的亮度。这种方法比使用模拟电阻来调节亮度更加高效和精确。

总之,PWM是一种非常有用的技术,它允许我们使用数字信号来精确控制模拟信号的电平。

以上介绍来自文心一言。

简而言之,PWM就是我们把定时器的计数器的值拿来和一个数做比较,计数器的值比较大的时候我们就输出高(低)电平,反之输出低(高)电平。

因此PWM离不开定时器,所以一写完上一篇定时器我就写了这PWM。

GD32E230中的PWM

因为我们上一篇是用的通用L4类型的定时器15,因此我们主要来看看这个类型的定时器的PWM。

我们这个类型的定时器是有PWM的,不过只有一个通道。

根据数据手册可以看到定时器15的唯一一个通道是GPIOB的8号引脚。  

知道这个之后就够了,接下来可以看看相关的固件库函数了。 

固件库函数

在固件库使用指南中,没有单独的PWM章节,是和定时器在一起的,我这边就挑我们用的到的说说。

我们可以拿上一篇定时器的代码接着用,配置定时器什么的都可以留着,把中断部分删掉就行,剩下就是配置一个PWM通道输出的就行。

timer_channel_output_config

配置定时器的通道输出,传入的参数有定时器,还有待配置通道,我们通用L4的没得选,只能用通道0,高级定时器的话是有四个通道可以用的。

最后一个参数是结构体变量的指针。

我们来看看这个结构体是怎么样的。

一共六个成员,首先第一个通道输出状态,那必然是要使能的,TIMER_CCX_ENABLE

第二个互补通道输出状态,一样给个使能,TIMER_CCXN_ENABLE

第三第四,通道输出极性和互补通道输出极性,我们都给个高电平,TIMER_OC_POLARITY_HIGHTIMER_OCN_POLARITY_HIGH。表示当输出比较生效的时候我们通道输出高电平。

第五第六个,空闲状态下通道输出,我们和上面非空闲状态来个不一样的低电平,TIMER_OC_IDLE_STATE_LOWTIMER_OCN_IDLE_STATE_LOW。表示当输出比较不生效的时候我们通道输出低电平。

具体这个输出比较的方法,我们后面会再配置。

在我们配置结构体成员之前我们需要先调用一个函数。

timer_channel_output_struct_para_init

就是这个函数,在配置之前先用这个函数进行初始化。

timer_channel_output_mode_config

设置输出比较模式。

我们主要看看模式0和模式1,一般都选模式0。

简单来说模式0是当我们计数器的值小于我们设置的值时,通道输出我们之前设置好的极性(我们上面选了高电平),反之输出空闲状态下的电平(我们上面选了低电平)。

模式1和模式0相反。

timer_primary_output_config

上面的配置完之后(记得还有之前的定时器也要先配置好),我们调用这个函数就可以使能通道输出了。

timer_channel_output_pulse_value_config

设置通道输出的比较值,要注意的是它需要和计数器的值做比较,因此它不要大于计数器的最大值(就是我们配置定时器时的周期值),否则永远都无法触发。

呼吸灯示例代码

因为我们设置的定时器周期值就是计数器达到的最大值,并且是需要和输出比较值做比较的,因此我们最好是选择10的倍数,这样好计算占空比。

#include "gd32e23x.h"
#include "systick.h"int main(void){systick_config();rcu_periph_clock_enable(RCU_TIMER15);                   //开启定时器时钟  rcu_periph_clock_enable(RCU_GPIOB);   gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE,GPIO_PIN_8);  gpio_output_options_set(GPIOB,GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ,GPIO_PIN_8);    gpio_af_set(GPIOB,GPIO_AF_2,GPIO_PIN_8);timer_parameter_struct timer_initpara;                  timer_initpara.prescaler = 72 - 1;                      //预分频timer_initpara.alignedmode = TIMER_COUNTER_EDGE;        //边缘对齐timer_initpara.counterdirection = TIMER_COUNTER_UP;     //向上计数timer_initpara.period = 1000 - 1;                       //周期    最好是10的倍数,这样好计算占空比timer_init(TIMER15,&timer_initpara);                    //初始化定时器timer_prescaler_config(TIMER15, 1, TIMER_PSC_RELOAD_NOW);//设置预分频器为立即加载模式timer_enable(TIMER15);                                  //使能定时器timer_oc_parameter_struct timer_ocinitpara;timer_channel_output_struct_para_init(&timer_ocinitpara);  //先初始化一下配置结构体timer_ocinitpara.outputstate  = TIMER_CCX_ENABLE;           //使能timer_ocinitpara.outputnstate = TIMER_CCXN_ENABLE;timer_ocinitpara.ocpolarity   = TIMER_OC_POLARITY_HIGH;     //高电平timer_ocinitpara.ocnpolarity  = TIMER_OCN_POLARITY_HIGH;timer_ocinitpara.ocidlestate  = TIMER_OC_IDLE_STATE_LOW;    //低电平timer_ocinitpara.ocnidlestate = TIMER_OCN_IDLE_STATE_LOW;timer_channel_output_config(TIMER15,TIMER_CH_0, &timer_ocinitpara); //配置通道输出timer_channel_output_mode_config(TIMER15, TIMER_CH_0, TIMER_OC_MODE_PWM0);// 配置定时器通道输出比较模式timer_primary_output_config(TIMER15, ENABLE);       //使能输出比较while(1){for(uint16_t i=0;i<1000;++i){timer_channel_output_pulse_value_config(TIMER15,TIMER_CH_0,i);delay_ms(1);}}
}

http://www.yidumall.com/news/20199.html

相关文章:

  • 餐饮管理系统哪个好冯宗耀seo教程
  • 个人做的网站有什么危险网络舆情监测系统
  • 网站建好了怎么做十大品牌营销策划公司
  • 网站制作图片插入代码免费个人网站平台
  • 织梦大气蓝色门户资讯网站模板金华百度seo
  • 个人网站还用备案吗百度怎么做广告
  • 小程序注册商标第几类百度seo文章
  • 做网站 php j2ee上海营销公司
  • 手机凡客网上海专业的seo推广咨询电话
  • 自己做壁纸的网站网络营销与直播电商是干什么的
  • 珠海建网站百度竞价排名商业模式
  • 手机app wap网站模板下载网络营销的四大特点
  • 做网站到底要不要备案谷歌关键词热度查询
  • 怎么样更好的做网站千锋教育北京校区
  • 深圳做企业网站的公司推荐创建网址快捷方式
  • 群晖 同步 wordpress站长工具seo综合查询引流
  • 广东省住房和建设局网站定制建站网站建设
  • 杨凌网站开发今日重大军事新闻
  • 免费给我推广湖北百度seo排名
  • 武汉网站建设供应商百度搜索引擎投放
  • 苏州网站建设设计公司网络广告策划
  • wordpress修改地址后网站打不开新闻头条 今天
  • 武汉交友群正规网站优化哪个公司好
  • 百度做的网站一般在什么后台产品免费推广网站有哪些
  • 东莞做网站公司首选!优化营商环境心得体会2023
  • 免费网站java源公司网站建设方案
  • 哈尔滨网站备案手续费河北seo技术交流
  • 荆门网站开发有哪些线上推广方案模板
  • 贵州网站外包品牌策划运营公司
  • 小学学校网站建设方案网络营销的方式与手段