S32DS for S32 Platform PWM输出实践

1、配置GPIO

新建完项目后,右键项目找到"S32 Configuration Tools"--》"Open Pins"进入PIN脚操作页面配置GPIO。这里用的MCU为S32K144:

在"外设信号"窗口选择FTM0(这里选择的是FTM0),选择对应引脚进行配置,保存

2、添加PWM外设组件

右键项目找到"S32 Configuration Tools"--》"Open Peripherals"进入外设组件界面

选择Drivers搜索"pwm",添加完双击"flexTimer_pwm_1",修改pwm配置信息后保存,添加一个"PWM Independent Configuration",更新源码

3、初始化

初始化完成功后PWM就打开了

c 复制代码
	ftm_state_t ftmStateStruct;//这个变量得时全局变量
	CLOCK_DRV_Init(&clockMan1_InitConfig0);//时钟初始化
	PINS_DRV_Init(NUM_OF_CONFIGURED_PINS0, g_pin_mux_InitConfigArr0);//引脚初始化
    /* Initialize FTM instance */
    FTM_DRV_Init(INST_FLEXTIMER_PWM_1, &flexTimer_pwm_1_InitConfig, &ftmStateStruct);
    /* Initialize FTM PWM */
    FTM_DRV_InitPwm(INST_FLEXTIMER_PWM_1, &flexTimer_pwm_1_PwmConfig);

4、其他函数

c 复制代码
//更改频率,输入变量为频率HZ,例如输入1KHZ则Frequency=1000
void PWM_FrequencyChange(uint32_t Frequency){
	FTM_DRV_UpdatePwmPeriod(INST_FLEXTIMER_PWM_1,FTM_PWM_UPDATE_IN_DUTY_CYCLE,Frequency,true);
	PWM_DutyCycleChange(Pwm_CurrentDutyCycle);//保持占空比不变
}

//更换占空比,输入变量为百分比值,例如百分之10则DutyCycle=10
void PWM_DutyCycleChange(uint32_t DutyCycle){
	Pwm_CurrentDutyCycle=DutyCycle;
	uint16_t dutyValue=(0x8000*(100-DutyCycle))/100;
    FTM_DRV_UpdatePwmChannel(INST_FLEXTIMER_PWM_1,
                             flexTimer_pwm_1_IndependentChannelsConfig[0].hwChannelId,
							 FTM_PWM_UPDATE_IN_DUTY_CYCLE, dutyValue,
                             0U,
                             true);
}
相关推荐
国产芯片设计4 小时前
小家电驱动开发实战:远乐YL1628在电饭煲显示面板的应用与调试
单片机·嵌入式硬件·mcu·51单片机·硬件工程
国产芯片设计5 小时前
DIY实战|0.8寸WiFi自动授时电子钟,国产数码管驱动芯片方案分享
stm32·单片机·mcu·51单片机·硬件工程
嵌入式的飞鱼2 天前
SD NAND vs eMMC:嵌入式存储方案怎么选?
嵌入式硬件·mcu·sd nand
[J] 一坚3 天前
嵌入式高手C
c语言·开发语言·stm32·单片机·mcu·51单片机·iot
EVERSPIN6 天前
基于MCU CH32X035 Type-C PD显示器方案
单片机·mcu·计算机外设
至为芯6 天前
PY32F071至为芯支持32位ARM内核的高主频MCU微控制器
单片机·嵌入式硬件·mcu
EVERSPIN7 天前
MCU单片机FOC汽车水泵方案
单片机·嵌入式硬件·mcu·汽车·mcu单片机
LongRunning8 天前
【BLE】STM32WB55低功耗实测(十)
mcu
LongRunning8 天前
【工具】STM32CubeMX和STM32CubeProgrammer安装问题
mcu
独小乐11 天前
019.ADC转换和子中断|千篇笔记实现嵌入式全栈/裸机篇
linux·c语言·驱动开发·笔记·嵌入式硬件·mcu·arm