#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 22:31:43 浏览: 113
这段代码是一个使用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`中断处理函数也进行了类似的操作。
请注意,这只是代码的一部分,缺少一些具体的函数实现和配置信息。如果您有具体的问题或需要更详细的帮助,请提供更多的代码和上下文信息。
相关问题
void IIC_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC->APB2ENR |= RCC_APB2ENR_GPIOBEN; // 使能GPIOB时钟 RCC->APB2ENR |= RCC_APB2ENR_GPIOAEN; // 使能GPIOA时钟 GPIO_InitStructure.Pin = GPIO_PIN_10|GPIO_PIN_2; GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStructure); HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10|GPIO_PIN_2, GPIO_PIN_SET); // PB6,PB7 输出高电平 GPIO_InitStructure.Pin = GPIO_PIN_7; GPIO_InitStructure.Mode = GPIO_MODE_INPUT; // 浮空输入 GPIO_Init(GPIOA, &GPIO_InitStructure); }在stm32中的头文件是
在STM32 HAL库中,通常需要包含以下头文件:
```c
#include "stm32f0xx_hal.h"
#include "main.h"
```
其中,stm32f0xx_hal.h是HAL库的主要头文件,包含大量HAL库函数的定义和数据类型的声明;而main.h则是用户自定义的头文件,用于存放自己编写的函数、变量等。这两个头文件通常是在每个源文件的开头被包含。注意,因为不同的STM32系列芯片使用的HAL库头文件可能不同,所以需要根据具体的芯片型号来选择正确的头文件。
void I2C_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; // ??GPIOB?? // __HAL_RCC_GPIOA_CLK_ENABLE(); RCC->IOPENR |= RCC_IOPENR_GPIOAEN | RCC_IOPENR_GPIOBEN; // ??PB6?PB7??????????? GPIO_InitStruct.Pin = GPIO_PIN_11 | GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP ; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Alternate = GPIO_AF1_I2C1; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); }的头文件有哪些
这个函数的头文件可能包括以下内容:
```c
#include "main.h" // 或者其他的头文件,例如:stm32f4xx_hal.h、stm32f4xx_hal_gpio.h、stm32f4xx_hal_i2c.h、stm32f4xx_hal_rcc.h等
#include "stm32f4xx_hal.h"
#include "stm32f4xx_hal_gpio.h"
```
其中,`main.h`文件可能包含有关使用的MCU型号、外设等信息。`stm32f4xx_hal.h`文件是HAL库的主头文件,包含所有HAL库的功能。`stm32f4xx_hal_gpio.h`和`stm32f4xx_hal_i2c.h`是GPIO和I2C的HAL库头文件,分别包含有关GPIO和I2C的功能。`stm32f4xx_hal_rcc.h`是关于RCC的HAL库头文件,包含有关时钟管理的功能。
阅读全文