S32K148 SDK3.0 PE配置 PWM

前言

S32K1xx Series Reference Manual的pdf文档45章介绍的是FTM(FlexTimer Module), S32K148有7个FTM:
在这里插入图片描述
本节中用到的是FTM4, Channel2, 使用引脚PTE22, 外挂一颗无源蜂鸣器:
在这里插入图片描述
蜂鸣器参数:
在这里插入图片描述
只要给4kHz, 50%占空比, 蜂鸣器就可以正常响了.

建立工程

打开S32 Design Studio for ARM, 接下来步骤:

  • File -> New -> S32DS Application Project
  • Processors 选择 S32K148, Project Name 填你自己的工程名
  • Select SDK: SDKs 选择 S32K148_SDK 3.0.0, Debugger选择J-Link, Finish.

ProcessorExpert配置

双击工程名, 点击Components窗口Components目录下的 pin_mux:PinSetting, 找到FTM -> FTM4 -> Channel 2, 选择PTE22, Output:在这里插入图片描述
Component Library中双击添加pwm_pal组件, 配置pwm_pal, 选择FTM4, Channel 2, 由于时钟源是System clock(实际测试48MHz), 预分配1, 得到4kHz只需要设置Period为12000, 占空比50%取一半, duty设置为6000, 注意Period取值范围[2, 65535]:
在这里插入图片描述
点击生成代码:
在这里插入图片描述

补全代码

main函数中系统和引脚的初始化:

  /* Write your code here */
  /* For example: for(;;) { } */
  CLOCK_SYS_Init(g_clockManConfigsArr, CLOCK_MANAGER_CONFIG_CNT,
                 g_clockManCallbacksArr, CLOCK_MANAGER_CALLBACK_CNT);
  CLOCK_SYS_UpdateConfiguration(0U, CLOCK_MANAGER_POLICY_AGREEMENT);
  PINS_DRV_Init(NUM_OF_CONFIGURED_PINS, g_pin_mux_InitConfigArr);

初始化PWM:

    /* Initialize PWM */
    PWM_Init(&pwm_pal1Instance, &pwm_pal1Configs);

这一步后, 4kHz, 50%占空比的方波就出来了, 蜂鸣器直接就开始响了, 怎么关闭呢? 看一下pwm_pal中可用的函数:
在这里插入图片描述
没有开始停止函数, 实际上, 只要把占空比设置为0, 就相当于停了, 这里让蜂鸣器响1s后停:

    /* Initialize PWM */
    PWM_Init(&pwm_pal1Instance, &pwm_pal1Configs);
    
    for (uint32_t i = 0; i < 2989000; i++);	//1s
    
	uint32_t duty = 0;
	uint8_t channel = pwm_pal1Configs.pwmChannels[0].channel;
    PWM_UpdateDuty(&pwm_pal1Instance, channel, duty);

    while(1) {
    }

调试运行, 蜂鸣器响一声后停止, 用示波器查看到的波形:
在这里插入图片描述

完整工程下载

https://download.csdn.net/download/weifengdq/12012194

微信公众号

欢迎扫描二维码关注本人微信公众号, 及时获取或者发送给我最新消息:
在这里插入图片描述

发布了203 篇原创文章 · 获赞 105 · 访问量 38万+

猜你喜欢

转载自blog.csdn.net/weifengdq/article/details/103371832
PWM