。!
AFIO->EXTICR[EXTADDR]|=GPIOx<<EXTOFFSET;//EXTI.BITx映射到GPIOx.BITx//自己主动设置EXTI->IMR|=1<<BITx;// 开启line BITx上的中断//EXTI->EMR|=1<<BITx;//不屏蔽line BITx上的事件 (假设不屏蔽这句,在硬件上是能够的,可是在软件仿真的时候无法进入中断!) if(TRIM&0x01)EXTI->FTSR|=1<<BITx;//line BITx上事件下降沿触发if(TRIM&0x02)EXTI->RTSR|=1<<BITx;//line BITx上事件上升降沿触发 } //不能在这里运行全部外设复位!否则至少引起串口不工作. //把全部时钟寄存器复位 //CHECK OK //091209 void MYRCC_DeInit(void) { RCC->APB1RSTR = 0x00000000;//复位结束 RCC->APB2RSTR = 0x00000000; RCC->AHBENR = 0x00000014; //睡眠模式闪存和SRAM时钟使能.其它关闭. RCC->APB2ENR = 0x00000000; //外设时钟关闭. RCC->APB1ENR = 0x00000000; RCC->CR |= 0x00000001; //使能内部快速时钟HSION RCC->CFGR &= 0xF8FF0000; //复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0] RCC->CR &= 0xFEF6FFFF; //复位HSEON,CSSON,PLLONRCC->CR &= 0xFFFBFFFF; //复位HSEBYP RCC->CFGR &= 0xFF80FFFF; //复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE RCC->CIR = 0x00000000; //关闭全部中断//配置向量表 #ifdef VECT_TAB_RAMMY_NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); #else MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0); #endif } //THUMB指令不支持汇编内联 //採用例如以下方法实现运行汇编指令WFI //CHECK OK //091209 __asm void WFI_SET(void) {WFI; } //进入待机模式 //check ok //091202 void Sys_Standby(void) {SCB->SCR|=1<<2;//使能SLEEPDEEP位 (SYS->CTRL) RCC->APB1ENR|=1<<28; //使能电源时钟 PWR->CSR|=1<<8; //设置WKUP用于唤醒PWR->CR|=1<<2; //清除Wake-up 标志PWR->CR|=1<<1; //PDDS置位 WFI_SET(); //运行WFI指令 } //后备寄存器写入操作 //reg:寄存器编号 //reg:要写入的数值 check ok 091202 //void BKP_Write(u8 reg,u16 dat) //{ // RCC->APB1ENR|=1<<28; //使能电源时钟 // RCC->APB1ENR|=1<<27; //使能备份时钟 // PWR->CR|=1<<8; //取消备份区写保护 // switch(reg) // { // case 1: // BKP->DR1=dat; // break; // case 2: // BKP->DR2=dat; // break; // case 3: // BKP->DR3=dat; // break; // case 4: // BKP->DR4=dat; // break; // case 5: // BKP->DR5=dat; // break; // case 6: // BKP->DR6=dat; // break; // case 7: // BKP->DR7=dat; // break; // case 8: // BKP->DR8=dat; // break; // case 9: // BKP->DR9=dat; // break; // case 10: // BKP->DR10=dat; // break; // } //} //系统软复位 //CHECK OK //091209 void Sys_Soft_Reset(void) { SCB->AIRCR =0X05FA0000|(u32)0x04; } //JTAG模式设置,用于设置JTAG的模式 //mode:jtag,swd模式设置;00,全使能;01,使能SWD;10,全关闭; //CHECK OK //100818 void JTAG_Set(u8 mode) {u32 temp;temp=mode;temp<<=25;RCC->APB2ENR|=1<<0; //开启辅助时钟 AFIO->MAPR&=0XF8FFFFFF; //清除MAPR的[26:24]AFIO->MAPR|=temp; //设置jtag模式 } //系统时钟初始化函数 //pll:选择的倍频数,从2開始,最大值为16 //CHECK OK //091209 void Stm32_Clock_Init(u8 PLL) {unsigned char temp=0; MYRCC_DeInit(); //复位并配置向量表RCC->CR|=0x00010000; //外部快速时钟使能HSEONwhile(!(RCC->CR>>17));//等待外部时钟就绪RCC->CFGR=0X00000400; //APB1=DIV2;APB2=DIV1;AHB=DIV1;PLL-=2;//抵消2个单位RCC->CFGR|=PLL<<18; //设置PLL值 2~16RCC->CFGR|=1<<16; //PLLSRC ON FLASH->ACR|=0x32; //FLASH 2个延时周期RCC->CR|=0x01000000; //PLLONwhile(!(RCC->CR>>25));//等待PLL锁定RCC->CFGR|=0x00000002;//PLL作为系统时钟 while(temp!=0x02) //等待PLL作为系统时钟设置成功{ temp=RCC->CFGR>>2;temp&=0x03;}
}
..\..\SYSTEM\sys\sys.c(77): error: #136: struct "<unnamed>" has no field "IPR"版权声明:本文博客原创文章,博客,未经同意,不得转载。
转载于:https://www.cnblogs.com/bhlsheji/p/4641542.html
相关资源:数据结构—成绩单生成器