搜索
bottom↓
回复: 10

有偿 求个smt32f030f4p6互补pwm程序(200元)

[复制链接]

出0入0汤圆

发表于 2024-3-11 19:08:23 | 显示全部楼层 |阅读模式
本帖最后由 taiyangshendi2 于 2024-3-11 19:15 编辑

采用smt32f030f4p6  外部晶振8M,最好使用mx生成的hal库 生成一路互补的pwm波,频率110khz,或者我自己改也行,原理图如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出1310入193汤圆

发表于 2024-3-11 21:10:27 来自手机 | 显示全部楼层
#include "stm32f0xx_hal.h"

TIM_HandleTypeDef htim1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM1_Init(void);

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM1_Init();

  // 开始PWM信号输出
  HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1);
  HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_1);

  while (1)
  {
    // 更新PWM占空比
  }
}

void SystemClock_Config(void)
{
  // 项目要求STM32CubeMX生成的系统时钟配置代码
}

static void MX_GPIO_Init(void)
{
  // 根据项目要求的GPIO配置代码
}

static void MX_TIM1_Init(void)
{
  TIM_ClockConfigTypeDef sClockSourceConfig = {0};
  TIM_MasterConfigTypeDef sMasterConfig = {0};
  TIM_OC_InitTypeDef sConfigOC = {0};
  TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig = {0};

  htim1.Instance = TIM1;
  htim1.Init.Prescaler = 440 - 1; // 48MHz / 440 = 109.09kHz
  htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim1.Init.Period = 100 - 1; // 110kHz
  htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  htim1.Init.RepetitionCounter = 0;
  htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;
  if (HAL_TIM_Base_Init(&htim1) != HAL_OK)
  {
    // 初始化错误处理
  }
  sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;
  if (HAL_TIM_ConfigClockSource(&htim1, &sClockSourceConfig) != HAL_OK)
  {
    // 配置错误处理
  }
  if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
  {
    // PWM初始化错误处理
  }
  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
  {
    // 主从同步配置错误处理
  }
  sConfigOC.OCMode = TIM_OCMODE_PWM1;
  sConfigOC.Pulse = 50; // 初始占空比为50%
  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(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    // PWM通道配置错误处理
  }
  sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
  sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
  sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
  sBreakDeadTimeConfig.DeadTime = 0;
  sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
  sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
  sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
  if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
  {
    // 死区时间和断路配置错误处理
  }
  HAL_TIM_MspPostInit(&htim1);
}

出0入211汤圆

发表于 2024-3-11 22:16:55 | 显示全部楼层

刚好最近也在用这个单片机,按照你的这个电路帮你改了一下,生成的是IAR工程,你可以自己调整为MDK的,这么小资源的单片机尽量用LL库。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2024-3-12 00:49:19 | 显示全部楼层
用STM32CubeMX 生成MDK V5 工程,  只需要在main.c 中手动添加以下两句:

  HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_3);//手动添加     开启CH3 PWM输出
  HAL_TIMEx_PWMN_Start(&htim1,TIM_CHANNEL_3);//手动添加  开启CHN3 PWM输出

下面是工程附件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2024-3-12 08:52:05 | 显示全部楼层
我先验证以上几位的

出50入135汤圆

发表于 2024-3-12 09:02:48 来自手机 | 显示全部楼层
不会cubemx?

出0入0汤圆

 楼主| 发表于 2024-3-12 10:09:44 | 显示全部楼层
本帖最后由 taiyangshendi2 于 2024-3-12 10:34 编辑

不熟啊  最近老出差 也没太多时间,封贴  已经好了

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2024-3-12 10:17:52 | 显示全部楼层
本帖最后由 887799 于 2024-3-12 10:23 编辑

解决了就好.

出0入0汤圆

发表于 2024-3-12 10:47:48 | 显示全部楼层
互补,需要加死区吗

出0入0汤圆

发表于 2024-3-12 10:59:10 | 显示全部楼层
看情况,外部有接驱动芯片自带死区的可以不加.

出0入0汤圆

 楼主| 发表于 2024-3-12 11:38:55 | 显示全部楼层

我在基础上加了死区,我驱的mos管
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 20:12

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表