电子说
首先从IAR官网下载最新的软件版本。
IAR Systems Product Updates
在IAR Embedded Workbench for Arm | IAR Systems 找到Download图标进行下载。
在S32K3xxDRV_r1.4 软件包种提供了各种外设的配置例程。
以eMIOS为例,此示例使用增强型模块化输入/输出子系统(eMIOS)生成PWM信号。PWM信号使用在OPWMB模式下运行的eMIOSO_CH[9]通道生成。PWM通道的时基由MCB递增计数模式下运行的eMIOS0_CH[8]通道设置。输出 PWM信号可在引脚PTA1上测量到。
/* emios_pwm_test.c*/
#include "drivers.h"
uint16_t dutyArray[2]={APP_PWM_PERIOD_HALF - (uint16_t)(0.5f*(float)APP_PWM_PERIOD_HALF),
APP_PWM_PERIOD_HALF + (uint16_t)(0.5f*(float)APP_PWM_PERIOD_HALF)};
int main (void)
{
/* 使能所有的片上外设 */
MCME_PeriphCtrl (MCME_ALL_PERIPH_EN_CONFIG);
/* 配置 GPIO引脚 */
SIUL_Init (PTA, PIN1, OUT_ALT2, PIN_DS_EN_PULLNO_SR_DI_PK_DI_CONFIG);
/* 时基设置 */
EMIOS_Init(EMIOS0,EMIOS_CH8,EMIOS_MODE_MCB_UP_ICLK(EMIOS_PRESC_1,EMIOS_PRESC_CLOCK,1u,APP_MC_A1));
/*PWM */
EMIOS_Init(EMIOS0,EMIOS_CH9,EMIOS_MODE_OPWMB_TB(EMIOS_BUS_BCDE,EMIOS_B1M_F,EMIOS_EDPOL_OUT_A_CLR_B_SET,5u,6u));
EMIOS_Enable(EMIOS0, EMIOS_CH8);
/*设置默认的 50% 占空比用于 PWM输出 */
EMIOS_Update(EMIOS0, EMIOS_OPWMB, EMIOS_CH9, dutyArray);
/*通过使能全局分频器来启动时基 */
EMIOS_EnablePrescaler(EMIOS0, 1u);
while(1) { asm("nop");}
}
头文件如下:
#ifndef __APPCONFIG_H
#define __APPCONFIG_H
#define configHANDLER_IN_TCM 1
#define configRUNTIME_IN_TCM 1
#define configCLOCK_MODE 5
#define configXTAL_FREQ 2
/* PWM周期: EMIOS / emios_global_prescaler / fPWM = 160MHz / 1 / 20kHz = 8000 */
#define APP_PWM_PERIOD 8000u
/* 模计数器缓冲(向上/向下)A1比较值*/
#define APP_MC_A1 ((APP_PWM_PERIOD ) + 1u)
/* 用于占空比计算的一半的 PWM周期滴答数*/
#define APP_PWM_PERIOD_HALF ((APP_PWM_PERIOD / 2u) +1u)
#endif /* __APPCONFIG_H */
编译工具链支持:
S32DS 3.4 | EWARM 9.32 |
---|---|
X | X |
全部0条评论
快来发表一下你的评论吧 !