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

网站开发 荣誉资质如何给企业做网站推广

网站开发 荣誉资质,如何给企业做网站推广,wordpress 截断插件,门店做网站有没有必要目录 1. 深入了解STM32定时器原理#xff0c;掌握脉宽调制pwm生成方法。 (1)STM32定时器原理 原理概述 STM32定时器的常见模式 使用步骤 (2)脉宽调制pwm生成方法。 2. 实验 (1)LED亮灭 代码 测试效果 (2)呼吸灯 代码 测试效果 3.总结 1. 深入了解STM32定时器原…目录 1. 深入了解STM32定时器原理掌握脉宽调制pwm生成方法。 (1)STM32定时器原理 原理概述 STM32定时器的常见模式 使用步骤 (2)脉宽调制pwm生成方法。 2. 实验 (1)LED亮灭   代码 测试效果 (2)呼吸灯 代码 测试效果 3.总结  1. 深入了解STM32定时器原理掌握脉宽调制pwm生成方法。 (1)STM32定时器原理 STM32定时器Timer是一种用于生成精确时间延时和执行周期性任务的外设。在STM32微控制器中定时器通常由一组定时器单元组成每个定时器单元都有自己的计数器和控制寄存器。这些定时器可以配置成多种模式例如定时器模式、输入捕获模式、输出比较模式等。 原理概述 计数器定时器内部有一个计数器它会不断地自增直到达到预设的值然后重新开始计数。计数器的增长速率由时钟源决定可以是内部时钟源如HSI、LSI或者外部时钟源如HSE、HCLK。 时钟源定时器的计数器工作时需要一个时钟源。STM32微控制器提供了多种时钟源供选择可以通过寄存器配置选择。时钟源的选择影响了定时器的精度和范围。 预分频器定时器还可以配置一个预分频器用于减小时钟源的频率从而降低计数器增长的速率。这个预分频器可以通过设置寄存器来配置允许定时器适应不同的应用需求。 模式配置STM32定时器可以配置成多种模式包括计数模式、定时器模式、PWM输出模式等。每种模式有不同的应用场景和功能。 STM32定时器的常见模式 计数模式定时器的计数器简单地递增直到达到最大值然后重新从零开始计数。这种模式通常用于测量时间间隔或者生成延时。 定时器模式在这种模式下定时器的计数器到达预设值后会产生一个中断或者触发一个输出。这种模式常用于产生精确的定时事件。 输入捕获模式定时器可以捕获外部信号的边沿并记录捕获时的计数器值。这种模式常用于测量外部信号的脉冲宽度或者频率。 输出比较模式定时器可以将计数器的值与预设的比较值进行比较并在匹配时触发中断或者改变输出状态。这种模式常用于生成PWM信号或者控制外部设备。 使用步骤 时钟使能首先需要启用定时器所需要的时钟源通常需要配置相应的时钟控制寄存器。 寄存器配置根据需要选择定时器、配置预分频器、选择工作模式以及设置相关参数。 中断配置如果需要定时器中断需要配置中断使能和相应的中断优先级。 启动定时器配置完成后启动定时器开始计数。 处理中断可选如果使用了定时器中断需要编写中断处理函数来处理定时器触发的中断事件。 定时器应用根据具体应用需求在定时器中断或者定时器到期时执行相应的操作。 定时器的主要功能: (2)脉宽调制pwm生成方法。 PWMPulse Width Modulation脉冲宽度调制是一种利用脉冲宽度即占空比实现对模拟信号进行控制的技术即是对模拟信号电平进行数字表示的方法。 广泛应用于电力电子技术中比如PWM控制技术在逆变电路中的应用     PWM还应用于直流电机调速如变频空调的交直流变频调速除实现调速外还具有节能等特性。 周期为10ms频率为100Hz 的PWM波形:  STM32的定时器除了TIM6和TIM7其他定时器都可以用来产生PWM输出 高级定时器TIM1和TIM8可以同时产生多达7路的PWM输出 通用定时器能同时产生多达4路的PWM输出 STM32中每个定时器有4个输入通道TIMx_CH1~TIMx_CH4 每个通道对应1个捕获/比较寄存器TIMx_CRRx将寄存器值和计数器值相比较通过比较结果输出高低电平从而得到PWM信号 脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号。 PWM标准外设库输出配置步骤:  2. 实验 (1)LED亮灭   使用STM32F103的 Tim2~Tim5其一定时器的某一个通道pin与GPIOx管脚复用见下图连接一个LED用定时器计数方式控制LED以2s的频率周期性地亮灭。 代码 main.c文件 #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include PWM.huint8_t i;int main(void) {OLED_Init();PWM_Init();while (1){PWM_SetCompare1(0);Delay_ms(2000);PWM_SetCompare1(100);Delay_ms(2000);} }PWM.h文件 #ifndef __PWM_H #define __PWM_Hvoid PWM_Init(void); void PWM_SetCompare1(uint16_t Compare);#endif PWM.c文件 #include stm32f10x.h // Device headervoid PWM_Init(void) {RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启时钟// RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); // GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE); // GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP; //复用推挽输出GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; //GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure);TIM_InternalClockConfig(TIM2);TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period 100 - 1; //ARRTIM_TimeBaseInitStructure.TIM_Prescaler 720 - 1; //PSCTIM_TimeBaseInitStructure.TIM_RepetitionCounter 0;TIM_TimeBaseInit(TIM2, TIM_TimeBaseInitStructure);TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(TIM_OCInitStructure);//给结构体赋初始值TIM_OCInitStructure.TIM_OCMode TIM_OCMode_PWM1;//设置输出比较的模式TIM_OCInitStructure.TIM_OCPolarity TIM_OCPolarity_High;//设置输出比较极性TIM_OCInitStructure.TIM_OutputState TIM_OutputState_Enable;//设置输出状态TIM_OCInitStructure.TIM_Pulse 0; //设置CCRTIM_OC1Init(TIM2, TIM_OCInitStructure);//放入Init函数中TIM_Cmd(TIM2, ENABLE); }void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare); }测试效果 (2)呼吸灯 采用定时器PWM模式让 LED 以呼吸灯方式渐亮渐灭周期为1~2秒自己调整占空比变化到一个满意效果使用Keil虚拟示波器观察 PWM输出波形。 代码 main.c文件 #include stm32f10x.h // Device header #include Delay.h #include OLED.h #include PWM.huint8_t i; //定义for循环的变量int main(void) {/*模块初始化*/OLED_Init(); //OLED初始化PWM_Init(); //PWM初始化while (1){for (i 0; i 100; i){PWM_SetCompare1(i); //依次将定时器的CCR寄存器设置为0~100PWM占空比逐渐增大LED逐渐变亮Delay_ms(10); //延时10ms}for (i 0; i 100; i){PWM_SetCompare1(100 - i); //依次将定时器的CCR寄存器设置为100~0PWM占空比逐渐减小LED逐渐变暗Delay_ms(10); //延时10ms}} } PWM.h #ifndef __PWM_H #define __PWM_Hvoid PWM_Init(void); void PWM_SetCompare1(uint16_t Compare);#endifPWM.c #include stm32f10x.h // Device headervoid PWM_Init(void) {/*开启时钟*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //开启TIM2的时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //开启GPIOA的时钟/*GPIO重映射*/ // RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //开启AFIO的时钟重映射必须先开启AFIO的时钟 // GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE); //将TIM2的引脚部分重映射具体的映射方案需查看参考手册 // GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //将JTAG引脚失能作为普通GPIO引脚使用/*GPIO初始化*/GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Pin GPIO_Pin_0; //GPIO_Pin_15;GPIO_InitStructure.GPIO_Speed GPIO_Speed_50MHz;GPIO_Init(GPIOA, GPIO_InitStructure); //将PA0引脚初始化为复用推挽输出 //受外设控制的引脚均需要配置为复用模式 /*配置时钟源*/TIM_InternalClockConfig(TIM2); //选择TIM2为内部时钟若不调用此函数TIM默认也为内部时钟/*时基单元初始化*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; //定义结构体变量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; //重复计数器高级定时器才会用到TIM_TimeBaseInit(TIM2, TIM_TimeBaseInitStructure); //将结构体变量交给TIM_TimeBaseInit配置TIM2的时基单元/*输出比较初始化*/TIM_OCInitTypeDef TIM_OCInitStructure; //定义结构体变量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 0; //初始的CCR值TIM_OC1Init(TIM2, TIM_OCInitStructure); //将结构体变量交给TIM_OC1Init配置TIM2的输出比较通道1/*TIM使能*/TIM_Cmd(TIM2, ENABLE); //使能TIM2定时器开始运行 }void PWM_SetCompare1(uint16_t Compare) {TIM_SetCompare1(TIM2, Compare); //设置CCR1的值 }测试效果 3.总结  深入了解STM32定时器原理掌握脉宽调制pwm生成方法,使用hal库制作定时器完成了led灯的亮灭与呼吸灯实验.
http://www.w-s-a.com/news/903770/

相关文章:

  • 网站建设开票东莞龙岗网站建设
  • 17网站一起做网批最近湘潭的新闻
  • 专业网站设计专业服务网站news怎么做
  • 杭州租房网站建设设计网站架构
  • 安徽做网站公司哪家好建设网站需要什么内容
  • 哪些网络公司可以做机票预订网站网站新闻后台怎么做
  • 微网站 域名企业网站怎么做推广
  • 兴安盟住房和城乡建设部网站在国外做网站
  • 南雄市建设局网站搜索关键词的方法
  • 网站建设维护工作经验深圳定制展会
  • 新闻类网站备案WordPress评论昵称显示错误
  • 如何建立一个个人网站自己做一个购物网站
  • 吴忠网站建设公司中国建筑股份有限公司 官网
  • 深圳电商网站开发公司page list wordpress
  • 长安外贸网站建设顺德区网站设计建设企业
  • 临沂市建设局网站简介专业建设网站开发
  • 肇庆网站制作设计中国企业500强招聘
  • 苏州厂房装修宁波seo网络推广外包报价
  • 文山知名网站建设惠州哪家做网站好
  • 物流网站风格网站登录密码保存在哪里设置
  • 免费网站怎么建立icodepython基础教程
  • 无障碍网站建设方案wordpress 任务管理系统
  • iis5.1发布网站中小企业网络营销存在的问题研究论文
  • 阳泉软件定制网站建设网站可以做多语言的吗
  • 建设网站的目的及功能定位主要包括哪些内容百度关键词优化
  • 开一个小程序要多少钱宁波seo网络推广外包报价
  • 网站备案最新备案号电子商务网站建设的规章制度
  • wordpress制作单页网站导航页面鞍山信息港招聘信息
  • 屏蔽ip地址访问网站自己做衣服的网站
  • 网站建设 域名业务 邮箱哪里有网站建设中心