S32K148 SDK3.0 PE配置 PWM

文章目录

    • 前言
    • 建立工程
    • ProcessorExpert配置
    • 补全代码
    • 完整工程下载
    • 微信公众号

前言

S32K1xx Series Reference Manual的pdf文档45章介绍的是FTM(FlexTimer Module), S32K148有7个FTM:
S32K148 SDK3.0 PE配置 PWM_第1张图片
本节中用到的是FTM4, Channel2, 使用引脚PTE22, 外挂一颗无源蜂鸣器:
S32K148 SDK3.0 PE配置 PWM_第2张图片
蜂鸣器参数:
S32K148 SDK3.0 PE配置 PWM_第3张图片
只要给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:S32K148 SDK3.0 PE配置 PWM_第4张图片
Component Library中双击添加pwm_pal组件, 配置pwm_pal, 选择FTM4, Channel 2, 由于时钟源是System clock(实际测试48MHz), 预分配1, 得到4kHz只需要设置Period为12000, 占空比50%取一半, duty设置为6000, 注意Period取值范围[2, 65535]:
在这里插入图片描述
点击生成代码:
S32K148 SDK3.0 PE配置 PWM_第5张图片

补全代码

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中可用的函数:
S32K148 SDK3.0 PE配置 PWM_第6张图片
没有开始停止函数, 实际上, 只要把占空比设置为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) {
    }

调试运行, 蜂鸣器响一声后停止, 用示波器查看到的波形:
S32K148 SDK3.0 PE配置 PWM_第7张图片

完整工程下载

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

微信公众号

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

你可能感兴趣的:(S32K148)