IC解密tms320F2812实现电机检测霍尔传感器程序
- IC解密#include "DSP281x_Device.h" // DSP281x Headerfile Include File
- IC解密#include "DSP281x_Examples.h" // DSP281x Examples Include File
- //GPIOA的宏定义
- //GPIO0-5输出模式 123
- #define PA0 GpioDataRegs.GPADAT.bit.GPIOA0
- #define PA1 GpioDataRegs.GPADAT.bit.GPIOA1
- #define PA2 GpioDataRegs.GPADAT.bit.GPIOA2
- #define PA3 GpioDataRegs.GPADAT.bit.GPIOA3
- #define PA4 GpioDataRegs.GPADAT.bit.GPIOA4
- #define PA5 GpioDataRegs.GPADAT.bit.GPIOA5
- //GPIO8-10输入模式
- #define PA8 GpioDataRegs.GPADAT.bit.GPIOA8
- #define PA9 GpioDataRegs.GPADAT.bit.GPIOA9
- #define PA10 GpioDataRegs.GPADAT.bit.GPIOA10
- //函数声明
- interrupt void cpu_timer0_isr(void); //中断函数的声明
- void gpio_init(); //GPIO配置函数声明
- void fuzhi(int a,int b,int c,int d,int e,int f); //给GPIOA0-5赋值函数声明
- void mode(int a); //状态选择和GPIOA8-10读取输出
- int driver_state=1; //中断查询确定在状态多少,driver_state取值1-6个状态
- int rotor_code; //存放GPIOA8-10的输出状态
- void main(void) //主函数
- {
- InitSysCtrl();//初始化系统
- gpio_init(); //GPIOA初始化
- DINT; //关中断
- IER = 0x0000;
- IFR = 0x0000;
- InitPieCtrl();//初始化PIE
- InitPieVectTable();//初始化PIE中断矢量表
- EALLOW;
- PieVectTable.TINT0 = & cpu_timer0_isr; //定时器0位中断0
- EDIS;
- InitCpuTimers(); // cpu初始化
- //定时器0的中断时间设置 150*1000000/150MHZ=1s
- ConfigCpuTimer(&CpuTimer0, 150, 1000000);
- StartCpuTimer0(); //启动定时器0
- IER |= M_INT1; //启动cpu给定时器时钟
- PieCtrlRegs.PIEIER1.bit.INTx7 = 1; // 中断0在向量表中的1组第7个
- EINT; // 总中断 INTM 使能
- ERTM; // 使能总实时中断 DBGM
- for(;;); //一直等待中断来
- }
- interrupt void cpu_timer0_isr(void) //中断服务函数
- {
- PieCtrlRegs.PIEACK.all = PIEACK_GROUP1; //0x0001赋给12组中断ACKnowledge寄存器,对其全部清除,不接受其他中断
- CpuTimer0Regs.TCR.bit.TIF=1; // 定时到了指定时间,标志位置位,清除标志
- CpuTimer0Regs.TCR.bit.TRB=1; // 重载Timer0的定时数据
- if(driver_state >= 6)
- driver_state=0; //状态达到最大值6后复位0
- mode(driver_state); //根据状态值,选择模式
- driver_state++;
- }

芯片解密