1.15 Cubemx_STM32F4 TIM(一)----PWM呼吸灯

1、配置

在这里插入图片描述
在这里插入图片描述
计数模式分为向上计数或者向下计数
自动装载值即ARR,即PWM周期
计数比较器CCRx,即占空比
极性,出差有效是高电平还是低电平
PWM 模式1
PWM模式2

输出电平与输出极性、PWM模式有关
向上计数:
如果PWM mode1 极性H ;按照上面红线输出
如果PWM mode1 极性L ;按照上面绿线输出

如果PWM mode2 极性H ;按照上面绿线输出
如果PWM mode2 极性L ;按照上面红线输出

在这里插入图片描述
直接生成代码

2、代码

bsp_pwm.c

#include "bsp_pwm.h"

/*
*********************************************************************************************************
*	函 数 名: PWM_TIM3_CH4_EN
*	功能说明: 使能PWM
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void PWM_TIM3_CH4_EN(void)
{
  HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_4);
}


/*
*********************************************************************************************************
*	函 数 名: bsp_SetPWM_ARR
*	功能说明: 设置PWM频率 即ARR自动重装载值
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_SetPWM_ARR(uint16_t _ARR)
{
	__HAL_TIM_SET_AUTORELOAD(&htim3,_ARR-1);
//	TIM3->ARR = _ARR-1;
}

/*
*********************************************************************************************************
*	函 数 名: bsp_InitPWM
*	功能说明: 使能PWM
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_InitPWM(void)
{
	PWM_TIM3_CH4_EN();
	bsp_SetPWM_ARR(_TIM3_ARR);//周期
	bsp_SetPWM_CCRx(500);//占空比
}


/*
*********************************************************************************************************
*	函 数 名: bsp_SetPWM_CCRx
*	功能说明: 设置占空比 即ARR
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
void bsp_SetPWM_CCRx(uint16_t duty)
{
	if(duty <= _TIM3_ARR)
	{
		__HAL_TIM_SET_COMPARE(&htim3, TIM_CHANNEL_4, duty);
//		TIM3->CCR4 = dutyCycle;
	}
}



bsp_pwm.h

#ifndef _BSP_PWM_H
#define _BSP_PWM_H

#include "stm32f4xx_hal.h"
#include "main.h"
#include "pub_gpio.h"
#include "tim.h"

/*PWM周期 单位us  84M/84 Prescaler*/
#define  _TIM3_ARR 1000

void bsp_InitPWM(void);
void bsp_SetPWM_CCRx(uint16_t duty);
void bsp_BLE_Control(uint8_t repeat);

#endif

void motor_task (void * arg) 
{
	osStatus_t status;
	bsp_InitPWM();		/*pwm PB1*/
	while(1)
	{
		#ifdef BLN_ //呼吸灯
		uint16_t pwmValue;
		while (pwmValue < _TIM3_ARR)
	  {
		  pwmValue ++;
		  bsp_SetPWM_CCRx(pwmValue);
		  osDelay(1);
	  }
	  while (pwmValue > _TIM3_ARR/2)
	  {
		  pwmValue --;
		  bsp_SetPWM_CCRx(pwmValue);
		  osDelay(1);
	  }
		#endif
			osThreadYield();
	} 
}

3、原理

脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽
度的控制,PWM 原理如图
在这里插入图片描述
如图为向上计数:
定时器重装载值为ARR,比较值CCRx
t时刻对计数器值和比较值进行比较
如果计数器值小于CCRx值,输出低电平
如果计数器值大于CCRx值,输出高电平
PWM的一个周期
定时器从0开始向上计数
当0-t1段,定时器计数器TIMx_CNT值小于CCRx值,输出低电平
t1-t2段,定时器计数器TIMx_CNT值大于CCRx值,输出高电平
当TIMx_CNT值达到ARR时,定时器溢出,重新向上计数…循环此过程
至此一个PWM周期完成
影响因素
ARR : 决定PWM周期(在时钟频率一定的情况下,当前为默认内部时钟CK_INT)
CCRx : 决定PWM占空比(高低电平所占整个周期比例)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: /build_dir/host/automake-1.15/.configured' failed是一个错误信息,意思是构建目录中的automake-1.15版本的配置文件失败了。 automake是一个自动构建工具,用于生成Makefile.in文件。配置文件负责设置构建过程中的各种参数和选项。如果配置文件生成失败,将会导致构建过程无法进行。 这个错误可能由于多种原因引起,例如构建环境中缺少依赖的软件包、文件系统权限不足或是配置文件本身存在问题等。 为了解决这个问题,我们可以尝试以下几个步骤: 1. 检查依赖软件包是否已安装:在构建过程中,可能需要依赖其他软件包。我们可以使用包管理器来检查这些依赖的软件包是否已正确安装。 2. 确保文件系统权限:检查构建目录及其父目录的权限设置。如果没有足够的权限,配置文件生成可能会失败。尝试使用sudo或管理员权限运行构建过程。 3. 检查配置文件是否正确:如果配置文件本身存在问题,可以尝试查看详细的错误日志,找出具体的配置错误,并进行相应的修复。 4. 更新automake版本:如果当前使用的automake版本较旧,可以尝试更新到最新版本,以解决已知的问题和错误。 总之,解决/build_dir/host/automake-1.15/.configured' failed错误需要仔细检查并确认构建环境和配置文件的正确性,并采取适当的措施来修复问题。 ### 回答2: 这个错误提示是在构建目录下运行Automake 1.15的时候出现了问题。可能有以下几个原因导致此错误: 1. automake-1.15版本未正确安装:请确保已经正确安装了automake-1.15版本,并且安装路径正确。可以通过运行命令`automake --version`来检查版本是否正确安装。 2. .configured文件权限问题:请确保.build_dir/host/automake-1.15/目录下的.configured文件具有足够的权限,以便Automake可以正确读取和写入该文件。可以使用`ls -l .configured`命令来检查文件权限,并通过`chmod`命令为文件设置正确的权限。 3. 构建环境配置问题:请确保构建环境的配置正确,包括路径设置、依赖库安装等。可能需要检查相关的环境变量和配置文件,确保构建目录下的automake-1.15可以正确访问相关的依赖项。 4. 构建目录下的配置文件错误:检查.build_dir/host/automake-1.15/目录下的配置文件是否正确,可能存在错误的配置项导致运行失败。可以尝试删除此目录并重新运行构建脚本,以生成正确的配置文件。 如果以上方法都无效,建议查看具体的错误信息以及生成的日志文件,以便更准确地定位问题并解决。可以结合相关的构建指南或者开发文档来排查这个错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值