dev(UML-2579): В тестовое окружение sdfm добавлен CLA модуль. Даннный код имеет ознакомительный характер т.к программа озврпщает указатель на нулевой адресс при первомже прерывании.
This commit is contained in:
parent
a40f5433bd
commit
6ccf356146
85
EFC_PlatformC28x/VoltageMonitoring/CLAInit.hpp
Normal file
85
EFC_PlatformC28x/VoltageMonitoring/CLAInit.hpp
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* CLAInit.hpp
|
||||
*
|
||||
* Created on: 3 сент. 2024 г.
|
||||
* Author: sedov
|
||||
*/
|
||||
|
||||
#ifndef VOLTAGEMONITORING_CLAINIT_HPP_
|
||||
#define VOLTAGEMONITORING_CLAINIT_HPP_
|
||||
|
||||
#include "f2838x_device.h"
|
||||
#include "cla_shared.h"
|
||||
#include "f2838x_examples.h"
|
||||
#include "f28x_project.h"
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#define MAX_SIZE 50
|
||||
#define SDFM_VOLTAGE_MAX 320.0 //mV
|
||||
#define R_DRW 4.0 //mOM
|
||||
#define BIT_MAX 32768//4096
|
||||
#define FACTOR_CURRENT_MOTOR_A (SDFM_VOLTAGE_MAX/R_DRW)
|
||||
#define FACTOR_CURRENT_MOTOR (FACTOR_CURRENT_MOTOR_A/BIT_MAX)
|
||||
namespace umlib { namespace imp {
|
||||
class CLAInit {
|
||||
public:
|
||||
CLAInit(const CLAInit &) = delete;
|
||||
CLAInit & operator=(const CLAInit &) = delete;
|
||||
CLAInit & operator=(const CLAInit &) volatile = delete;
|
||||
bool initCLA();
|
||||
bool CLA_runTest();
|
||||
void clear() volatile;
|
||||
void clear();
|
||||
~CLAInit();
|
||||
void configClaMemory();
|
||||
void initCpu1Cla1();
|
||||
private:
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
// Переменные класса (при необходимости)
|
||||
#pragma DATA_SECTION("CpuToCla1MsgRAM");
|
||||
float CurrentA; // Ток в фазе A
|
||||
#pragma DATA_SECTION("CpuToCla1MsgRAM");
|
||||
float CurrentB; // Ток в фазе B
|
||||
#pragma DATA_SECTION("CpuToCla1MsgRAM");
|
||||
float CurrentC; // Ток в фазе C
|
||||
#pragma DATA_SECTION("CpuToCla1MsgRAM");
|
||||
float currentCoefK; // Коэффициент преобразования
|
||||
#pragma DATA_SECTION("CpuToCla1MsgRAM");
|
||||
float currentCoefB; // Коэффициент сдвига
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
float dataList[MAX_SIZE]; // Коэффициент сдвига
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
int dataSize; // Коэффициент сдвига
|
||||
|
||||
// Переменные, которые будут переданы от CLA к CPU
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentIa; // Ток в фазе A
|
||||
#pragma DATA_SECTION( "Cla1ToCpuMsgRAM");
|
||||
volatile float currentIb; // Ток в фазе B
|
||||
#pragma DATA_SECTION( "Cla1ToCpuMsgRAM");
|
||||
volatile float currentIc; // Ток в фазе C
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentAlpha; // Ток в оси альфа
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentBeta; // Ток в оси бета
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentOffset; // Смещение нуля тока
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentRms; // Среднеквадратичное значение тока
|
||||
#pragma DATA_SECTION( "Cla1ToCpuMsgRAM");
|
||||
volatile float currentLength; // Амплитудное значение тока
|
||||
#pragma DATA_SECTION("Cla1ToCpuMsgRAM");
|
||||
volatile float currentSqrlen; // Квадрат амплитудного значения тока
|
||||
#endif //__cplusplus
|
||||
uint16_t pass=0;
|
||||
uint16_t fail=0;
|
||||
|
||||
|
||||
};
|
||||
}}
|
||||
|
||||
|
||||
#endif /* VOLTAGEMONITORING_CLAINIT_HPP_ */
|
||||
130
EFC_PlatformC28x/VoltageMonitoring/CLAinit.cpp
Normal file
130
EFC_PlatformC28x/VoltageMonitoring/CLAinit.cpp
Normal file
@ -0,0 +1,130 @@
|
||||
/*
|
||||
* CLAinut.cpp
|
||||
*
|
||||
* Created on: 3 сент. 2024 г.
|
||||
* Author: sedov
|
||||
*/
|
||||
#include "CLAinit.hpp"
|
||||
|
||||
|
||||
bool umlib::imp::CLAInit::CLA_runTest(){
|
||||
int16_t i;
|
||||
float error;
|
||||
int pass = 0, fail = 0;
|
||||
|
||||
for (i = 1; i < BUFFER_SIZE; i++) {
|
||||
// Передаем входные значения от CPU к CLA
|
||||
CurrentA =i;
|
||||
CurrentB = i+1;
|
||||
CurrentC = i-1;
|
||||
currentCoefK = FACTOR_CURRENT_MOTOR;
|
||||
currentCoefB=0;
|
||||
Cla1ForceTask1andWait();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void umlib::imp::CLAInit::configClaMemory()
|
||||
{
|
||||
extern uint32_t Cla1funcsRunStart, Cla1funcsLoadStart, Cla1funcsLoadSize;
|
||||
EALLOW;
|
||||
|
||||
#ifdef _FLASH
|
||||
//
|
||||
// Copy over code from FLASH to RAM
|
||||
//
|
||||
memcpy((uint32_t *)&Cla1funcsRunStart, (uint32_t *)&Cla1funcsLoadStart,
|
||||
(uint32_t)&Cla1funcsLoadSize);
|
||||
#endif //_FLASH
|
||||
|
||||
//
|
||||
// Initialize and wait for CLA1ToCPUMsgRAM
|
||||
//
|
||||
MemCfgRegs.MSGxINIT.bit.INIT_CLA1TOCPU = 1;
|
||||
while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CLA1TOCPU != 1){};
|
||||
|
||||
//
|
||||
// Initialize and wait for CPUToCLA1MsgRAM
|
||||
//
|
||||
MemCfgRegs.MSGxINIT.bit.INIT_CPUTOCLA1 = 1;
|
||||
while(MemCfgRegs.MSGxINITDONE.bit.INITDONE_CPUTOCLA1 != 1){};
|
||||
|
||||
//
|
||||
// Select LS5RAM to be the programming space for the CLA
|
||||
// First configure the CLA to be the master for LS5 and then
|
||||
// set the space to be a program block
|
||||
//
|
||||
MemCfgRegs.LSxMSEL.bit.MSEL_LS7 = 1;
|
||||
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS7 = 1;
|
||||
|
||||
//
|
||||
// Next configure LS0RAM and LS1RAM as data spaces for the CLA
|
||||
// First configure the CLA to be the master for LS0(1) and then
|
||||
// set the spaces to be code blocks
|
||||
//
|
||||
MemCfgRegs.LSxMSEL.bit.MSEL_LS0 = 1;
|
||||
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS0 = 0;
|
||||
|
||||
MemCfgRegs.LSxMSEL.bit.MSEL_LS1 = 1;
|
||||
MemCfgRegs.LSxCLAPGM.bit.CLAPGM_LS1 = 0;
|
||||
|
||||
EDIS;
|
||||
}
|
||||
|
||||
|
||||
void umlib::imp::CLAInit::initCpu1Cla1()
|
||||
{
|
||||
//
|
||||
// Suppressing #770-D conversion from pointer to smaller integer
|
||||
// The CLA address range is 16 bits so the addresses passed to the MVECT
|
||||
// registers will be in the lower 64KW address space. Turn the warning
|
||||
// back on after the MVECTs are assigned addresses
|
||||
//
|
||||
#pragma diag_suppress=770
|
||||
EALLOW;
|
||||
Cla1Regs.MVECT1 = (uint16_t)(&Cla1Task1);
|
||||
Cla1Regs.MVECT2 = (uint16_t)(&Cla1Task2);
|
||||
Cla1Regs.MVECT3 = (uint16_t)(&Cla1Task3);
|
||||
Cla1Regs.MVECT4 = (uint16_t)(&Cla1Task4);
|
||||
Cla1Regs.MVECT5 = (uint16_t)(&Cla1Task5);
|
||||
Cla1Regs.MVECT6 = (uint16_t)(&Cla1Task6);
|
||||
Cla1Regs.MVECT7 = (uint16_t)(&Cla1Task7);
|
||||
Cla1Regs.MVECT8 = (uint16_t)(&Cla1Task8);
|
||||
#pragma diag_warning=770
|
||||
|
||||
//
|
||||
// Enable the IACK instruction to start a task on CLA in software
|
||||
// for all 8 CLA tasks. Also, globally enable all 8 tasks (or a
|
||||
// subset of tasks) by writing to their respective bits in the
|
||||
// MIER register
|
||||
//
|
||||
Cla1Regs.MCTL.bit.IACKE = 1;
|
||||
Cla1Regs.MIER.all = 0x00FF;
|
||||
|
||||
//
|
||||
// Configure the vectors for the end-of-task interrupt for all
|
||||
// 8 tasks
|
||||
//
|
||||
PieVectTable.CLA1_1_INT = &cla1Isr1;
|
||||
PieVectTable.CLA1_2_INT = &cla1Isr2;
|
||||
PieVectTable.CLA1_3_INT = &cla1Isr3;
|
||||
PieVectTable.CLA1_4_INT = &cla1Isr4;
|
||||
PieVectTable.CLA1_5_INT = &cla1Isr5;
|
||||
PieVectTable.CLA1_6_INT = &cla1Isr6;
|
||||
PieVectTable.CLA1_7_INT = &cla1Isr7;
|
||||
PieVectTable.CLA1_8_INT = &cla1Isr8;
|
||||
|
||||
|
||||
|
||||
/// Enable CLA Task1 to SDFM1 Iterput
|
||||
DmaClaSrcSelRegs.CLA1TASKSRCSEL1.bit.TASK1 = 95U;
|
||||
//
|
||||
// Enable CLA interrupts at the group and subgroup levels
|
||||
//
|
||||
PieCtrlRegs.PIEIER11.all = 0xFFFF;
|
||||
IER |= (M_INT11 );
|
||||
}
|
||||
bool umlib::imp::CLAInit::initCLA(){
|
||||
configClaMemory();
|
||||
initCpu1Cla1();
|
||||
}
|
||||
162
EFC_PlatformC28x/VoltageMonitoring/cla.cla
Normal file
162
EFC_PlatformC28x/VoltageMonitoring/cla.cla
Normal file
@ -0,0 +1,162 @@
|
||||
//#############################################################################
|
||||
// \file cla_ex1_asin_cla.cla
|
||||
//
|
||||
// \brief SDFM Example
|
||||
//
|
||||
//#############################################################################
|
||||
|
||||
|
||||
//
|
||||
// Included Files
|
||||
//
|
||||
#include "cla_shared.h"
|
||||
#include "f28x_project.h"
|
||||
|
||||
//
|
||||
// Defines
|
||||
//
|
||||
|
||||
//
|
||||
// Globals
|
||||
//
|
||||
|
||||
|
||||
#define MAX_SIZE 50
|
||||
#define SDFM_VOLTAGE_MAX 320.0 //mV
|
||||
#define R_BRAKE 220.0 //mOM
|
||||
#define R_DRW 4.0 //mOM
|
||||
#define R_VDC 806.0 //Om
|
||||
#define R_DEL_VDC 2000000.0 //Om
|
||||
|
||||
#define BIT_MAX 32768//4096
|
||||
#define IMAX_A 25.0 //A
|
||||
#define IMAX (IMAX_A*BIT_MAX/FACTOR_CURRENT_MOTOR_A)
|
||||
|
||||
#define FACTOR_VDC (SDFM_VOLTAGE_MAX/R_VDC*(R_DEL_VDC+R_VDC)/1000)
|
||||
|
||||
#define FACTOR_CURRENT_BRAKE_A (SDFM_VOLTAGE_MAX/R_BRAKE) //A
|
||||
#define FACTOR_CURRENT_MOTOR_A (SDFM_VOLTAGE_MAX/R_DRW) //A
|
||||
|
||||
#define FACTOR_CURRENT_BRAKE (FACTOR_CURRENT_BRAKE_A/BIT_MAX)
|
||||
#define FACTOR_CURRENT_MOTOR (FACTOR_CURRENT_MOTOR_A/BIT_MAX)
|
||||
|
||||
|
||||
|
||||
float mySqrt(float number) {
|
||||
if (number < 0) {
|
||||
|
||||
return -1.0f;
|
||||
}
|
||||
|
||||
if (number == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
float guess = number / 2.0f;
|
||||
float epsilon = 0.00001f;
|
||||
|
||||
while (fabs(guess * guess - number) >= epsilon) {
|
||||
guess = (guess + number / guess) / 2.0f;
|
||||
}
|
||||
|
||||
return guess;
|
||||
}
|
||||
|
||||
void addToList(float value) {
|
||||
int i;
|
||||
if (dataSize < MAX_SIZE) {
|
||||
dataList[dataSize++] = value;
|
||||
} else {
|
||||
for ( i = 1; i < MAX_SIZE; ++i) {
|
||||
dataList[i - 1] = dataList[i];
|
||||
}
|
||||
dataList[MAX_SIZE - 1] = value;
|
||||
}
|
||||
}
|
||||
|
||||
float sumList() {
|
||||
int i;
|
||||
float total = 0.0f;
|
||||
for ( i = 0; i < dataSize; ++i) {
|
||||
total += dataList[i];
|
||||
}
|
||||
return total;
|
||||
}
|
||||
|
||||
int getListSize() {
|
||||
return dataSize;
|
||||
}
|
||||
|
||||
void convertCurrentToAmps(float currentCode, float offset, float factor, float* current) {
|
||||
*current = (currentCode * factor) + offset;
|
||||
}
|
||||
|
||||
void calculateMainParameters(float currentA, float currentB, float currentC,
|
||||
float* currentAlpha, float* currentBeta, float* currentOffset) {
|
||||
*currentAlpha = currentA;
|
||||
*currentBeta = (currentA + 2 * currentB) * 0.577350269f;
|
||||
*currentOffset = currentA + currentB + currentC;
|
||||
}
|
||||
|
||||
void calculateStatisticalParameters(float a, float b,
|
||||
float* currentRms, float* currentLength, float* currentSqrlen) {
|
||||
*currentSqrlen = (a * a + b * b);
|
||||
addToList(*currentSqrlen);
|
||||
addToList( *currentSqrlen);
|
||||
*currentRms = mySqrt(sumList() / getListSize());
|
||||
*currentLength = mySqrt(a * a + b * b);
|
||||
|
||||
}
|
||||
__interrupt void Cla1Task1 ( void )
|
||||
{
|
||||
|
||||
|
||||
convertCurrentToAmps(CurrentA, currentCoefB, currentCoefK, ¤tIa);
|
||||
convertCurrentToAmps(CurrentB, currentCoefB, currentCoefK, ¤tIb);
|
||||
convertCurrentToAmps(CurrentC, currentCoefB, currentCoefK, ¤tIc);
|
||||
|
||||
calculateMainParameters(currentIa, currentIb, currentIc, ¤tAlpha, ¤tBeta, ¤tOffset);
|
||||
|
||||
calculateStatisticalParameters(currentAlpha, currentBeta, ¤tRms, ¤tLength, ¤tSqrlen);
|
||||
|
||||
addToList(currentLength * currentLength);
|
||||
}
|
||||
|
||||
interrupt void Cla1Task2 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task3 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task4 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task5 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task6 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task7 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
interrupt void Cla1Task8 ( void )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//
|
||||
// End of file
|
||||
//
|
||||
165
EFC_PlatformC28x/VoltageMonitoring/cla_shared.h
Normal file
165
EFC_PlatformC28x/VoltageMonitoring/cla_shared.h
Normal file
@ -0,0 +1,165 @@
|
||||
#ifndef _CLA_ASIN_SHARED_H_
|
||||
#define _CLA_ASIN_SHARED_H_
|
||||
//#############################################################################
|
||||
//
|
||||
// FILE: cla_shared.h
|
||||
//
|
||||
// TITLE: CLA arcsine example header file.
|
||||
//
|
||||
//
|
||||
// Included Files
|
||||
//
|
||||
|
||||
#include "f28x_project.h"
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
//
|
||||
// Defines
|
||||
//
|
||||
#define BUFFER_SIZE 64
|
||||
#define TABLE_SIZE 64
|
||||
#define TABLE_SIZE_M_1 TABLE_SIZE-1
|
||||
#define PIBYTWO 1.570796327
|
||||
#define PI 3.141592653589
|
||||
#define INV2PI 0.159154943
|
||||
|
||||
|
||||
|
||||
//
|
||||
// Globals
|
||||
//
|
||||
//
|
||||
//Task 1 (C) Variables
|
||||
//
|
||||
#define MAX_SIZE 50
|
||||
extern float dataList[MAX_SIZE];
|
||||
extern float CurrentA;
|
||||
extern float CurrentB;
|
||||
extern float CurrentC;
|
||||
extern float currentCoefK;
|
||||
extern float currentCoefB;
|
||||
extern int dataSize;
|
||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> CLA
|
||||
extern volatile float currentIa; // <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> A
|
||||
extern volatile float currentIb; // <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> B
|
||||
extern volatile float currentIc; // <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD> C
|
||||
|
||||
extern volatile float currentAlpha; // <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
extern volatile float currentBeta; // <20><><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
extern volatile float currentOffset; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
extern volatile float currentRms; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
extern volatile float currentLength; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
extern volatile float currentSqrlen; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
||||
|
||||
//
|
||||
// cla1Isr1 - CLA1 ISR 1
|
||||
//
|
||||
__interrupt void cla1Isr1 ()
|
||||
{
|
||||
//
|
||||
// Acknowledge the end-of-task interrupt for task 1
|
||||
//
|
||||
PieCtrlRegs.PIEACK.all = M_INT11;
|
||||
|
||||
//
|
||||
// Uncomment to halt debugger and stop here
|
||||
//
|
||||
// asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr2 - CLA1 ISR 2
|
||||
//
|
||||
__interrupt void cla1Isr2 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr3 - CLA1 ISR 3
|
||||
//
|
||||
__interrupt void cla1Isr3 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr4 - CLA1 ISR 4
|
||||
//
|
||||
__interrupt void cla1Isr4 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr5 - CLA1 ISR 5
|
||||
//
|
||||
__interrupt void cla1Isr5 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr6 - CLA1 ISR 6
|
||||
//
|
||||
__interrupt void cla1Isr6 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr7 - CLA1 ISR 7
|
||||
//
|
||||
__interrupt void cla1Isr7 ()
|
||||
{
|
||||
asm(" ESTOP0");
|
||||
}
|
||||
|
||||
//
|
||||
// cla1Isr8 - CLA1 ISR 8
|
||||
//
|
||||
__interrupt void cla1Isr8 ()
|
||||
{
|
||||
//
|
||||
// Acknowledge the end-of-task interrupt for task 8
|
||||
//
|
||||
PieCtrlRegs.PIEACK.all = M_INT11;
|
||||
|
||||
//
|
||||
// Uncomment to halt debugger and stop here
|
||||
//
|
||||
// asm(" ESTOP0");
|
||||
}
|
||||
//
|
||||
|
||||
//
|
||||
// Function Prototypes
|
||||
//
|
||||
// The following are symbols defined in the CLA assembly code
|
||||
// Including them in the shared header file makes them
|
||||
// .global and the main CPU can make use of them.
|
||||
//
|
||||
__interrupt void Cla1Task1();
|
||||
__interrupt void Cla1Task2();
|
||||
__interrupt void Cla1Task3();
|
||||
__interrupt void Cla1Task4();
|
||||
__interrupt void Cla1Task5();
|
||||
__interrupt void Cla1Task6();
|
||||
__interrupt void Cla1Task7();
|
||||
__interrupt void Cla1Task8();
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif // extern "C"
|
||||
|
||||
#endif //end of _CLA_ASIN_SHARED_H_ definition
|
||||
|
||||
//
|
||||
// End of file
|
||||
//
|
||||
Loading…
Reference in New Issue
Block a user