#include "mmllc.h" void main(void) { MMLLC_HAL_setupDevice(); //配置标志位GPIO MMLLC_HAL_setupProfilingGPIO(); MMLLC_HAL_disablePWMClkCounting(); MMLLC_initGlobalVariables(); MMLLC_HAL_setupPWM(MMLLC_MAX_PWM_SWITCHING_FREQUENCY_HZ, MMLLC_PWMSYSCLOCK_FREQ_HZ); DEVICE_DELAY_US(10000); //control loop // // MMLLC_HAL_setupECAPinPWMMode(ECAP1_BASE, MMLLC_ISR2_FREQUENCY_HZ, MMLLC_CPU_SYS_CLOCK_FREQ_HZ); MMLLC_HAL_setupADC(); MMLLC_HAL_setupTrigForADC(); // // MMLLC_HAL_setupBoardProtection(); // // MMLLC_setBuildLevelIndicatorVariable(); // MMLLC_HAL_setupInterrupt(); MMLLC_HAL_setupPWMpins(); //延时,确保配置完成,且留出金升阳完成供电的时间 DEVICE_DELAY_US(30000); //清除TZ强制拉高标志位,实现高电平启动 MMLLC_HAL_clearPWMOneShotTripFlag(EPWM1_BASE); MMLLC_HAL_clearPWMOneShotTripFlag(EPWM2_BASE); MMLLC_HAL_clearPWMOneShotTripFlag(EPWM3_BASE); MMLLC_HAL_clearPWMOneShotTripFlag(EPWM5_BASE); MMLLC_HAL_clearPWMOneShotTripFlag(EPWM6_BASE); MMLLC_HAL_clearPWMOneShotTripFlag(EPWM7_BASE); //启动系统时钟 MMLLC_HAL_enablePWMClkCounting(); for(;;) { // } } interrupt void ISR1(void) { ISR2_count++; MMLLC_HAL_setProfilingGPIO1(); // MMLLC_runISR1(); MMLLC_HAL_clearISR1InterruputFlag(); // MMLLC_HAL_resetProfilingGPIO1(); if(ISR2_count >= 5) { // IER |= 0x4; // IER &= 0x4; // // IER |= 0x1; // // IER &= 0x1; // EINT; // // MMLLC_HAL_setProfilingGPIO2(); MMLLC_runISR2(); MMLLC_HAL_resetProfilingGPIO2(); // DINT; // MMLLC_HAL_clearISR2InterruputFlag(); ISR2_count = 0; } } interrupt void ISR2(void) { IER |= 0x4; IER &= 0x4; // IER |= 0x1; // IER &= 0x1; EINT; MMLLC_HAL_setProfilingGPIO2(); MMLLC_runISR2(); MMLLC_HAL_resetProfilingGPIO2(); DINT; MMLLC_HAL_clearISR2InterruputFlag(); } interrupt void ISR3(void) { EINT; MMLLC_HAL_setProfilingGPIO3(); MMLLC_runISR3(); MMLLC_HAL_resetProfilingGPIO3(); DINT; MMLLC_HAL_clearISR3InterruputFlag(); }
时间: 2024-04-11 14:31:43 浏览: 104
led.zip_stm32f103zet6 led
这段代码是一个使用mmllc.h头文件的C2000 DSP的主程序。它包含了一些主要的函数调用和中断处理函数。
在`main`函数中,首先进行了一些初始化操作,如设置设备、配置GPIO、禁用PWM时钟计数、初始化全局变量等。然后进行了一些PWM的配置和延时,确保配置完成和供电时间。最后进入一个无限循环,用于控制系统的运行。
中断处理函数包括`ISR1`、`ISR2`和`ISR3`。在`ISR1`中,增加了`ISR2_count`计数,并通过设置和清除GPIO来进行性能分析。然后调用了`MMLLC_runISR1`函数,并清除了ISR1的中断标志位。如果`ISR2_count`达到5次,则进入`ISR2`中断处理函数,设置和清除GPIO,调用`MMLLC_runISR2`函数,并清除ISR2的中断标志位。类似地,`ISR3`中断处理函数也进行了类似的操作。
请注意,这只是代码的一部分,缺少一些具体的函数实现和配置信息。如果您有具体的问题或需要更详细的帮助,请提供更多的代码和上下文信息。
阅读全文