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

做跨境电商的网站做网站内嵌地图

做跨境电商的网站,做网站内嵌地图,创业网站开发要多少钱,深圳电子网站建设目录 概述 1 PWM 输入模式 1.1 原理介绍 1.2 应用实例 1.3 示例时序图 2 使用STM32Cube配置工程 2.1 软件环境 2.2 配置参数 2.3 生成项目文件 3 功能实现 3.1 PWM占空比函数 3.2 输入捕捉回调函数 4 功能测试 4.1 测试软件框架结构 4.2 实验实现 4.2.1 测试实…

目录

概述

1  PWM 输入模式

1.1 原理介绍

1.2 应用实例

1.3 示例时序图

2 使用STM32Cube配置工程

2.1  软件环境

2.2 配置参数

2.3 生成项目文件

3 功能实现

3.1 PWM占空比函数

3.2 输入捕捉回调函数

4 功能测试

4.1 测试软件框架结构

4.2 实验实现

4.2.1 测试实验1

4.2.2 测试实验2


STM32高级控制定时器(STM32F103):PWM 输入模式,测速pwm的占空比,频率参数

源代码下载地址:

STM32高级控制定时器(STM32F103):PWM输入模式资源-CSDN文库

概述

本文主要介绍STM32高级定时器的用法至输入捕获功能,该功能可用于捕捉外部输入信号的频率,并且计算出PWM的占空比。笔者通过详细的案例介绍这个功能,包括理论知识,实现原理,以及如何使用STM32Cube配置基本的参数,编写实用代码,实现捕捉频率当的功能。

1  PWM 输入模式

1.1 原理介绍

这种模式是输入捕获模式的一种特殊情况。程序相同,只是:

1)两个ICx信号映射在同一个TIx输入上

2)这2个ICx信号在具有相反极性的边缘上是活动的

3)选择两个TIxFP信号中的一个作为触发输入和从模式控制器在重置模式下配置。

1.2 应用实例

用户可以测量周期(在TIMx_CCR1寄存器中)和占空比(在TIMx_CCR2寄存器)使用以下程序(取决于在CK_INT频率和预分频器值上):

1)选择TIMx_CCR1的激活输入:将CC1S位写入TIMx_CCMR1中的01寄存器(选择TI1)。

2)选择TI1FP1的有效极性(用于TIMx_CCR1和计数器中的捕获清除):将CC1P位写入“0”(上升沿激活)。

3)选择TIMx_CCR2的激活输入:将CC2S位写入TIMx_CCMR1中的10寄存器(选择TI1)。

4)选择TI1FP2的有效极性(用于TIMx_CCR2中的捕获):写入CC2P位到“1”(在下降沿上有效)。

5) 选择有效的触发输入:将TS位写入TIMx_SMCR寄存器中的101(已选择TI1FP1)。

6) 在重置模式下配置从属模式控制器:将SMS位写入TIMx_SMCR寄存器。

7) 启用捕获:将CC1E和CC2E位写入TIMx_CCER寄存器中的“1”。

1.3 示例时序图

PWM输入模式只能与TIMx_CH1/TIMx_CH2信号一起使用,因为只有TI1FP1和TI2FP2连接到从模式控制器。

2 使用STM32Cube配置工程

2.1  软件环境

软件名称版本信息
STM32CubeSTM32CubeMX 6.11
STM32 HALSTM32Cube_FW_F1_V1.8.5

2.2 配置参数

1)配置系统时钟:72M Hz,Timer的工作时钟为72M Hz

2)  使用定时器1配置输入捕获功能

 其对应的IO口配置

 计数器时钟参数和捕获通道参数

 3)配置PWM相关参数

选择定时器8作为控制PWM的输出

PWM波对应的IO接口

 Timer-8定时器相关参数

和PWM相关的参数配置

 

2.3 生成项目文件

 使用STM32FCube完成项目配置后,就可以生成工程文件。生成代码如下:

3 功能实现

3.1 PWM占空比函数

在tim.c文件中实现配置输出PWM占空比函数,函数代码如下:

参数介绍

1)Pluse:  占空比

2)Channel: 输出通道号

void HAL_TIM_SetPWM_Pulse( uint32_t Pulse, uint32_t Channel)
{TIM_OC_InitTypeDef sConfigOC = {0};sConfigOC.OCMode = TIM_OCMODE_PWM1;sConfigOC.Pulse = Pulse;sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;sConfigOC.OCNPolarity = TIM_OCNPOLARITY_HIGH;sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;if (HAL_TIM_PWM_ConfigChannel(&htim8, &sConfigOC, Channel) != HAL_OK){Error_Handler();}
}

3.2 输入捕捉回调函数

在input_capture.c实现输入捕捉回调函数。

函数功能介绍

1)计算输入的PWM的频率

2)计算输入的PWM的周期

3)计算输入的PWM的占空比

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{uint32_t uwIC2Value1 = 0;uint32_t uwIC2Value2 = 0;uint32_t cycle,pluse,freq;static uint32_t uwIC2Value2_list[2];static uint8_t count = 0;float dutyfactor;if(htim->Instance == TIM1) {if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1){/* Get the 1st Input Capture value */}else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2){uwIC2Value1 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_1);/* Get the 1st Input Capture value */uwIC2Value2 = HAL_TIM_ReadCapturedValue(htim, TIM_CHANNEL_2);if( uwIC2Value2 > uwIC2Value1){pluse = uwIC2Value2- uwIC2Value1; uwIC2Value2_list[count] = uwIC2Value1;count++;if( count == 2 ){count = 0;if( uwIC2Value2_list[1] > uwIC2Value2_list[0]){cycle = uwIC2Value2_list[1]- uwIC2Value2_list[0];freq =  1000000/cycle;dutyfactor = (pluse*100)/cycle;printf("PWM cycle = %d us, PWM freq = %d Hz\r\n",  cycle, freq);printf("PWM dutyfactor = %d%s\r\n", (int)dutyfactor,"%");}}}}}
}

4 功能测试

4.1 测试软件框架结构

4.2 实验实现

PWM的工作的使用频率为1us, 一个PWM的周期为10 000 us, 通过调制Pulse的值就可以改变占空比,其中每一个Plus表示1us,举个例子:

设置Pluse = 500, 表示占空比为:500/10000 *100 % = 5%

4.2.1 测试实验1

1)配置PWM参数,输出频率为100Hz,占空比为5%

 
void pwm_ctrl_Init( void )
{HAL_TIM_Base_Start( &htim8 );HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_1);  // PC6 HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_2);  // PC7HAL_TIM_SetPWM_Pulse( 500, TIM_CHANNEL_1);HAL_TIM_SetPWM_Pulse( 500, TIM_CHANNEL_2);
}

2)配置输入捕捉电平信号触发类型

void Input_CaptureInit( void )
{set_captureMode(TIM_CHANNEL_2, TIM_INPUTCHANNELPOLARITY_FALLING);set_captureMode(TIM_CHANNEL_1, TIM_INPUTCHANNELPOLARITY_RISING);
}

3) 编译代码,下载到板卡运行,结果如下:

逻辑分析仪测试到的波形

调试终端打印的数据log:

 

 4.2.2 测试实验2

1)配置PWM参数,输出频率为100Hz,占空比为50%

 
void pwm_ctrl_Init( void )
{HAL_TIM_Base_Start( &htim8 );HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_1);  // PC6 HAL_TIM_PWM_Start( &htim8, TIM_CHANNEL_2);  // PC7HAL_TIM_SetPWM_Pulse( 5000, TIM_CHANNEL_1);HAL_TIM_SetPWM_Pulse( 5000, TIM_CHANNEL_2);
}

2) 编译代码,下载到板卡运行,结果如下:

逻辑分析仪测试到的波形

 调试终端打印的数据log:

http://www.yayakq.cn/news/905633/

相关文章:

  • 安徽手机版建站系统wordpress 首页显示分类文章
  • seo教学网站平面广告图片
  • 淮北网站开发公司网站建设有云端吗
  • 赶集的网站怎么做wordpress 主题数据
  • 襄阳旅游景点网站建设求购做网站
  • 模板建站代理电商网站建设的维护要多少钱
  • seo建站技巧seo网络推广招聘
  • 网站建设成本分析汕头建立网页公司
  • 中铁建设集团有限公司中标项目域名对seo的影响
  • 个人网站建设课程wordpress 图片模糊
  • 自己做网站卖东西ipad 网站开发工具
  • 网站建设通查询网站制作的常见布局
  • 网站建设任务执行书中国世界排名足球
  • 企业网站制作机构排名免费视频推广的软件有哪些
  • 中山古镇做网站的公司免费创建虚拟网站
  • 物流网站建设合同范本运行时间 wordpress
  • 网站建设合同电子版如何删除图标wordpress
  • 外贸公司的网站建设模板重庆网站备案规定
  • 全运网站的建设豆角网是哪个网站开发的
  • 都网站建设百度搜索引擎广告位的投放
  • 网站建设茶店网iis5.1建网站
  • 网站建设毕业答辩ppt怎么写鞍山吧台
  • 做货代网站阿芹网站建设
  • 做的好的营销型网站有哪些团购网站的发展
  • 石家庄做网站建设公司最好看的2019中文大全电影
  • 网站建设必须配置漯河网站建设兼职
  • 可以做编程题的网站网络架构有哪些
  • 下载网站php源码网络营销策划方案范文
  • 珠宝网站开发目的怎么制作自己的微信公众号
  • 网站运营推广的方法有哪些微信手机网站三合一