1 #include "sys.h"
2 #include "HAL_misc.h"
3 
RemapVtorTable(void)4 void  RemapVtorTable(void)
5 {
6     int i;
7     RCC->AHB1ENR |= 1<<13;//bkp clk,enable sram
8     //关ROM区中断
9     for(i = 0;i<90;i++)
10     {
11         NVIC_DisableIRQ((IRQn_Type)i);
12     }
13     SCB->VTOR = 0;
14     SCB->VTOR |= 0x1<<29;
15     for(i = 0;i < 512;i+=4)
16     *(u32*)(T_SRAM_BASE + i) = *(u32*)(T_SDRAM_BASE+i);
17 
18 }
19 
AI_Responder_enable(void)20 void  AI_Responder_enable(void)
21 {
22   AI_Responder->ADDR1= 0x70807040;
23 //  AI_Responder->ADDR0 = 0x70027080;
24   AI_Responder->ADDR1 = 0;
25   AI_Responder->CCR &= ~(0x3<<3);
26   AI_Responder->CCR |= 1;
27   while((AI_Responder->SR & 0x3) != 2);
28 }
AI_Responder_disable(void)29 void  AI_Responder_disable(void)
30 {
31     AI_Responder->CCR &= ~1;
32 }
33 
34 
35 //外部中断配置函数
36 //只针对GPIOA~E
37 //参数:
38 //GPIOx:0~4,代表GPIOA~E
39 //BITx:需要使能的位,例如PB12,就填 12;
40 //TRIM:触发模式,1,下降沿;2,上升沿;3,任意电平触发
41 //该函数一次只能配置1个IO口,多个IO口,需多次调用
42 //该函数会自动开启对应中断,以及屏蔽线
Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)43 void Ex_NVIC_Config(u8 GPIOx,u8 BITx,u8 TRIM)
44 {
45     u8 EXTOFFSET=(BITx%4)*4;
46     RCC->APB2ENR|=1<<14;                        //使能SYSCFG时钟
47     SYSCFG->EXTICR[BITx/4]&=~(0x000F<<EXTOFFSET);//清除原来设置!!!
48     SYSCFG->EXTICR[BITx/4]|=GPIOx<<EXTOFFSET;   //EXTI.BITx映射到GPIOx.BITx
49     //自动设置
50     EXTI->IMR|=1<<BITx;                 //开启line BITx上的中断(如果要禁止中断,则反操作即可)
51     if(TRIM&0x01)EXTI->FTSR|=1<<BITx;   //line BITx事件下降沿触发
52     if(TRIM&0x02)EXTI->RTSR|=1<<BITx;   //line BITx事件上升沿触发
53 }
54 
55 
56 //THUMB指令不支持汇编内联
57 //采用如下方法实现执行汇编指令WFI
WFI_SET(void)58 void WFI_SET(void)
59 {
60     __ASM volatile("wfi");
61 }
62 //关闭所有中断(但是不包括fault和NMI中断)
INTX_DISABLE(void)63 void INTX_DISABLE(void)
64 {
65     __ASM volatile("cpsid i");
66 }
67 //开启所有中断
INTX_ENABLE(void)68 void INTX_ENABLE(void)
69 {
70     __ASM volatile("cpsie i");
71 }
72 //设置栈顶地址  __set_MSP(0x70002000);
73 
74 //进入待机模式
Sys_Standby(void)75 void Sys_Standby(void)
76 {
77     SCB->SCR|=1<<2;     //使能SLEEPDEEP位 (SYS->CTRL)
78     RCC->APB1ENR|=1<<28;//使能电源时钟
79     PWR->CSR|=1<<8;     //设置WKUP用于唤醒
80     PWR->CR|=1<<2;      //清除Wake-up 标志
81     PWR->CR|=1<<1;      //PDDS置位
82     WFI_SET();          //执行WFI指令,进入待机模式
83 }
84 //系统软复位
Sys_Soft_Reset(void)85 void Sys_Soft_Reset(void)
86 {
87     SCB->AIRCR =0X05FA0000|(u32)0x04;
88 }
89 
90 //      TK499_NVIC_Init(2,2,TK80_IRQn,2);
91 //设置NVIC
92 //NVIC_PreemptionPriority:抢占优先级
93 //NVIC_SubPriority       :响应优先级
94 //NVIC_Channel           :中断编号
95 //NVIC_Group             :中断分组 0~4
96 //注意优先级不能超过设定的组的范围!否则会有意想不到的错误
97 //组划分:
98 //组0:0位抢占优先级,4位响应优先级
99 //组1:1位抢占优先级,3位响应优先级
100 //组2:2位抢占优先级,2位响应优先级
101 //组3:3位抢占优先级,1位响应优先级
102 //组4:4位抢占优先级,0位响应优先级
103 //NVIC_SubPriority和NVIC_PreemptionPriority的原则是,数值越小,越优先
TK499_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)104 void TK499_NVIC_Init(u8 NVIC_PreemptionPriority,u8 NVIC_SubPriority,u8 NVIC_Channel,u8 NVIC_Group)
105 {
106     u32 temp;
107     NVIC_SetPriorityGrouping(NVIC_Group);//设置分组
108     temp=NVIC_PreemptionPriority<<(4-NVIC_Group);
109     temp|=NVIC_SubPriority&(0x0f>>NVIC_Group);
110     temp&=0xf;                              //取低四位
111     NVIC->ISER[NVIC_Channel/32]|=1<<NVIC_Channel%32;//使能中断位(要清除的话,设置ICER对应位为1即可)
112     NVIC->IP[NVIC_Channel]|=temp<<4;                //设置响应优先级和抢断优先级
113 }
114 
TK80_IRQHandler(void)115 void TK80_IRQHandler(void)
116 {
117     if(TK80->SR & 0x1)
118     {
119 
120     }
121     if(TK80->SR & 0x2)
122     {
123 
124     }
125     if(TK80->SR & 0x4)
126     {
127 
128     }
129     if(TK80->SR & 0x8)
130     {
131 
132     }
133     TK80->SR |= 0;
134 }
135 
136 //备用函数
137 //#define T_SRAM_FUN1 0x20000400
138 //copyAtoB((u32)LCD_PutPixel&0xFFFFFFFE,T_SRAM_FUN1,800);//加载函数到SRAM
139 //void copyAtoB(u32 srcAdd,u32 dstAdd,u16 len)
140 //{
141 //    len = (len + 3)/4;
142 //    while(len--)
143 //    {
144 //        *(u32*)dstAdd = *(u32*)srcAdd;
145 //        dstAdd += 4 ;
146 //        srcAdd +=4 ;
147 //    }
148 //}
149 
150 
151 
152 
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
163