当前位置: 首页 > news >正文

网站建设费摊销几年网站建站网站建设

网站建设费摊销几年,网站建站网站建设,回兴网络推广软件,自适应网站系统吗Linux 学习记录58(ARM篇) 本文目录 Linux 学习记录58(ARM篇)一、GIC相关寄存器1. 系统框图2. 中断号对应关系 二、GICD寄存器1. GICD_CTLR2. GICD_ISENABLERx3. GICD_IPRIORITYRx4. GICD_ITARGETSRx5. GICD_ICPENDRx 三、GICC寄存器1. GICC_PMR2. GICC_CTLR3. GICC_IAR4. GICC_…Linux 学习记录58(ARM篇) 本文目录 Linux 学习记录58(ARM篇)一、GIC相关寄存器1. 系统框图2. 中断号对应关系 二、GICD寄存器1. GICD_CTLR2. GICD_ISENABLERx3. GICD_IPRIORITYRx4. GICD_ITARGETSRx5. GICD_ICPENDRx 三、GICC寄存器1. GICC_PMR2. GICC_CTLR3. GICC_IAR4. GICC_EOIR 四、封装函数1. 寄存器封装2. EXTI初始化结构体/枚举封装3. GICD初始化结构体/枚举4. GICC初始化结构体/枚举5. EXTI函数6. GICD函数7. GICC函数8. 使用示例 一、GIC相关寄存器 1. 系统框图 PPI私有外设中断号(ID:0~15)SPI共享外设中断号(ID:16~31)SGI软件产生的中断号(ID:0~287) 总结 GIC层一共管理288个中断号(ID:0 ~ 287),16个SGIS,16个PPIS,256个SPIS 2. 中断号对应关系 例 二、GICD寄存器 1. GICD_CTLR 功能使能CPU 2. GICD_ISENABLERx 功能设置GICD层中断使能 该寄存器共有8个(0-8)用于使能GICD层的的288个中断号每个寄存器32位分别控制32个中断号的使能 计算方式 置1 为使能 int ID 99//中断号以外部中断号为99的ID为例 ID / 32 3 使用 GICD_ISENABLER3 寄存器即可 ID % 32 3 使用 GICD_ISENABLER3 寄存器的第 3 bit位 即可3. GICD_IPRIORITYRx 功能设置GICD层中断优先级 计算方式 备注设置中断优先级值的范围在0 ~ 2^5 -1 GICD层中断优先级需要比GICC层中断优先级高 中断优先级的值越小代表中断优先级越高 int ID 99//中断号以外部中断号为99的ID为例 ID / 4 24 使用 GICD_IPRIORITYR第24个寄存器即可 ID % 4 3 (*83) 27 从 GICD_IPRIORITYR第24个 寄存器的第 27 ~ 37(274) bit位 即可4. GICD_ITARGETSRx 功能分配给cpu0 或者 cpu1 该寄存器共有72个(0~71)个寄存器 [ 288个中断号/每个寄存器控制4个中断号的分配 ] 计算方式 int ID 99//中断号以外部中断号为99的ID为例 ID / 4 24 使用 GICD_ITARGETSR第24个寄存器即可 ID % 4 3 (*8) 24 从 GICD_ITARGETSR第24个 寄存器的第 24 ~ 25(241) bit位 即可5. GICD_ICPENDRx 功能清除GICD层挂起的中断标志位 该寄存器给共有8个寄存器[ 228个中断号/每个寄存器控制32个中断号的清除 ] 计算方式 置1为清除 int ID 99//中断号以外部中断号为99的ID为例 ID / 32 3 使用 GICD_ICPENDR第3个寄存器即可 ID % 32 3 从 GICD_ICPENDR第3个 寄存器的第 3 bit位 即可三、GICC寄存器 1. GICC_PMR 功能设置GICC层中断优先级 2. GICC_CTLR 功能使能cpu中断 3. GICC_IAR 功能获取中断号这个寄存器只读 4. GICC_EOIR 功能清除获取到中断号 四、封装函数 1. 寄存器封装 typedef unsigned char uint8_t; typedef unsigned short int uint16_t; typedef unsigned int uint32_t;#define __IO volatile typedef struct{__IO uint32_t RTSR1; // EXTI rising trigger selection register __IO uint32_t FTSR1; // EXTI falling trigger selection register __IO uint32_t SWIER1; // EXTI software interrupt event register __IO uint32_t RPR1; // EXTI rising edge pending register__IO uint32_t FPR1; // EXTI falling edge pending register__IO uint32_t TZENR1; // EXTI TrustZone enable register__IO uint32_t RES1[2]; __IO uint32_t RTSR2; // EXTI rising trigger selection register__IO uint32_t FTSR2; // EXTI falling trigger selection register__IO uint32_t SWIER2; // EXTI software interrupt event register__IO uint32_t RPR2; // EXTI rising edge pending register__IO uint32_t FPR2; // EXTI falling edge pending register__IO uint32_t TZENR2; // EXTI TrustZone enable register__IO uint32_t RES2[2];__IO uint32_t RTSR3; // EXTI rising trigger selection register__IO uint32_t FTSR3; // EXTI falling trigger selection register__IO uint32_t SWIER3; // EXTI software interrupt event register__IO uint32_t RPR3; // EXTI rising edge pending register__IO uint32_t FPR3; // EXTI falling edge pending register__IO uint32_t TZENR3; // EXTI TrustZone enable register__IO uint32_t RES3[2];__IO uint32_t EXTICR1; // EXTI external interrupt selection register 1__IO uint32_t EXTICR2; // EXTI external interrupt selection register 2 __IO uint32_t EXTICR3; // EXTI external interrupt selection register 3 __IO uint32_t EXTICR4; // EXTI external interrupt selection register 4 __IO uint32_t RES4[4];__IO uint32_t C1IMR1; // EXTI CPU1 wakeup with interrupt mask register__IO uint32_t C1EMR1; // EXTI CPU1 wakeup with event mask register__IO uint32_t RES5[2];__IO uint32_t C1IMR2; // EXTI CPU1 wakeup with interrupt mask register__IO uint32_t C1EMR2; // EXTI CPU1 wakeup with event mask register__IO uint32_t RES6[2];__IO uint32_t C1IMR3; // EXTI CPU1 wakeup with interrupt mask register __IO uint32_t C1EMR3; // EXTI CPU1 wakeup with event mask register __IO uint32_t RES7[6];__IO uint32_t C2IMR1; // EXTI CPU2 wakeup with interrupt mask register__IO uint32_t C2EMR1; // EXTI CPU2 wakeup with event mask register__IO uint32_t RES8[2];__IO uint32_t C2IMR2; // EXTI CPU2 wakeup with interrupt mask register__IO uint32_t C2EMR2; // EXTI CPU2 wakeup with event mask register__IO uint32_t RES9[2];__IO uint32_t C2IMR3; // EXTI CPU2 wakeup with interrupt mask register __IO uint32_t C2EMR3; // EXTI CPU2 wakeup with event mask register __IO uint32_t RES10[2]; }EXTI_TypeDef;#define EXTI ((EXTI_TypeDef*)0x5000D000)typedef struct {volatile unsigned int CTRL;volatile unsigned int TYPER;volatile unsigned int IIDR;volatile unsigned int RES1[29];volatile unsigned int IGROUPR[9];volatile unsigned int RES2[23];volatile unsigned int ISENABLER[9];volatile unsigned int RES3[23];volatile unsigned int ICENABLER[9];volatile unsigned int RES4[23];volatile unsigned int ISPENDR[9];volatile unsigned int RES5[23];volatile unsigned int ICPENDR[9];volatile unsigned int RES6[23];volatile unsigned int ISACTIVER[9];volatile unsigned int RES7[23];volatile unsigned int ICACTIVER[9];volatile unsigned int RES8[23];volatile unsigned int IPRIORITYR[72];volatile unsigned int RES9[184];volatile unsigned int ITARGETSR[72];volatile unsigned int RES10[184]; volatile unsigned int ICFGR[18];volatile unsigned int RES11[46];}GICD_TypeDef; #define GICD ((GICD_TypeDef*)0xA0021000)typedef struct {volatile unsigned int CTRL;volatile unsigned int PMR;volatile unsigned int BRR;volatile unsigned int IAR;volatile unsigned int EOIR;volatile unsigned int RPR;volatile unsigned int HPPIR;volatile unsigned int ABPR;volatile unsigned int AIAR;volatile unsigned int AEOIR;volatile unsigned int AHPPIR;volatile unsigned int RES1[41];volatile unsigned int APR0;volatile unsigned int RES2[3];volatile unsigned int NSAPR0;volatile unsigned int RES3[6];volatile unsigned int IIDR;volatile unsigned int RES4[960];volatile unsigned int DIRDIR;}GICC_TypeDef; #define GICC ((GICC_TypeDef*)0xA0022000) 2. EXTI初始化结构体/枚举封装 typedef enum {EXTI_GPIOA 0x0,EXTI_GPIOB,EXTI_GPIOC,EXTI_GPIOD,EXTI_GPIOE,EXTI_GPIOF,EXTI_GPIOG,EXTI_GPIOH,EXTI_GPIOI,EXTI_GPIOJ,EXTI_GPIOK,EXTI_GPIOZ, }EXTI_GPIOxTypedef;typedef enum {EXTI_Trigger_Rising 0x0,//上升EXTI_Trigger_Falling,//下降EXTI_Trigger_Rising_Falling,//双边沿 }EXTI_TriggerTypedef;typedef struct {uint16_t EXTI_GPIOx;//GPIO组号uint16_t EXTI_Line;//中断线uint8_t EXTI_Trigger;//触发方式uint8_t EXTI_Wakeup;//是否屏蔽}EXTI_InitTypeDef; /*相关函数声明*/ /*外部中断初始化*/ void EXTI_Init(EXTI_InitTypeDef* EXTI_Init); /*清除挂起标志位s*/ void EXTI_Clr_FPR1(uint16_t ID);3. GICD初始化结构体/枚举 typedef enum {/*和GICC共用*/GIC_CPU0 0x1,//CPU0GIC_CPU1,//CPU1GIC_CPU1_0,//CPU1和CPU0 }GIC_CPUTypedef;typedef struct {uint8_t GICD_CPU;//使能的CPUuint8_t GICD_Allocation_CPU;//分配CPUuint8_t GICD_priority;//设置优先级uint16_t GICD_interrupt_ID;//使能的中断号}GICD_InitTypeDef; /*相关函数声明*/ /*GICD初始化*/ void GICD_Init(GICD_InitTypeDef* GICD_Init); /*清除挂起标志位*/ void GICD_Clr_ICPENDR(uint16_t ID);4. GICC初始化结构体/枚举 typedef struct {uint8_t GICC_priority;//设置优先级uint8_t GICC_CPU;//使能的CPU }GICC_InitTypeDef; /*相关函数声明*/ /*GICC初始化*/ void GICC_Init(GICD_InitTypeDef* GICD_Init); /*获取中断号*/ uint32_t GICC_Get_IAR(void); /*清除中断号*/ void GICC_Clr_EOIR(uint32_t ID);5. EXTI函数 void EXTI_Init(EXTI_InitTypeDef* EXTI_Init) {uint8_t py 0;py EXTI_Init-EXTI_Line/4;py;switch(py){case 1:{/*连接Pin到EXTI_line*/EXTI-EXTICR1 ~(0xff ((EXTI_Init-EXTI_Line%4) *8));EXTI-EXTICR1 | (EXTI_Init-EXTI_GPIOx ((EXTI_Init-EXTI_Line%4) *8));}break;case 2:{/*连接Pin到EXTI_line*/EXTI-EXTICR2 ~(0xff ((EXTI_Init-EXTI_Line%4) *8));EXTI-EXTICR2 | (EXTI_Init-EXTI_GPIOx ((EXTI_Init-EXTI_Line%4) *8));}break;case 3:{EXTI-EXTICR3 ~(0xff ((EXTI_Init-EXTI_Line%4) *8));EXTI-EXTICR3 | (EXTI_Init-EXTI_GPIOx ((EXTI_Init-EXTI_Line%4) *8));}break;case 4:{/*连接Pin到EXTI_line*/EXTI-EXTICR4 ~(0xff ((EXTI_Init-EXTI_Line%4) *8));EXTI-EXTICR4 | (EXTI_Init-EXTI_GPIOx ((EXTI_Init-EXTI_Line%4) *8));}break;default : break;}switch(EXTI_Init-EXTI_Trigger){case EXTI_Trigger_Rising :{//上升沿/*设置为上升降沿触发*/EXTI-RTSR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-RTSR1 | (0x1 EXTI_Init-EXTI_Line);}break;case EXTI_Trigger_Falling :{//下降沿/*设置为下降沿触发*/EXTI-FTSR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-FTSR1 | (0x1 EXTI_Init-EXTI_Line);}break;case EXTI_Trigger_Rising_Falling :{//双边沿/*设置下降沿触发*/EXTI-FTSR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-FTSR1 | (0x1 EXTI_Init-EXTI_Line);/*设置为上升降沿触发*/EXTI-RTSR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-RTSR1 | (0x1 EXTI_Init-EXTI_Line);}break;}/*设置EXTI不屏蔽*/EXTI-C1IMR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-C1IMR1 | (0x1 EXTI_Init-EXTI_Line);/*设置EXTI不屏蔽*/EXTI-C1IMR1 ~(0x1 EXTI_Init-EXTI_Line);EXTI-C1IMR1 | (0x1 EXTI_Init-EXTI_Line); }/*清除挂起标志位s*/ void EXTI_Clr_FPR1(uint16_t ID) {EXTI-FPR1 | 0x1 ID; }6. GICD函数 /*GICD初始化*/ void GICD_Init(GICD_InitTypeDef* GICD_Init) {/*使能GICD*/GICD-CTRL ~(0x3);GICD-CTRL | GICD_Init-GICD_CPU;/*设置使能寄存器*/GICD-ISENABLER[GICD_Init-GICD_interrupt_ID/32] | 0x1(GICD_Init-GICD_interrupt_ID%32);/*设置中断优先级*/GICD-IPRIORITYR[GICD_Init-GICD_interrupt_ID/4] ~(0x1F ((GICD_Init-GICD_interrupt_ID%32)*83));GICD-IPRIORITYR[GICD_Init-GICD_interrupt_ID/4] | GICD_Init-GICD_priority ((GICD_Init-GICD_interrupt_ID%32)*83);/*设置中断优先级*/GICD-ITARGETSR[GICD_Init-GICD_interrupt_ID/4] ~(0x3 ((GICD_Init-GICD_interrupt_ID%32)*8));GICD-ITARGETSR[GICD_Init-GICD_interrupt_ID/4] | GICD_Init-GICD_Allocation_CPU ((GICD_Init-GICD_interrupt_ID%32)*8); } /*清除挂起标志位*/ void GICD_Clr_ICPENDR(uint16_t ID) {GICD-ICPENDR[ID/32] | 0x1 ID%32; }7. GICC函数 /*GICC初始化*/ void GICC_Init(GICC_InitTypeDef* GICC_Init) {/*使能CICC*/GICC-CTRL ~(0x3);GICC-CTRL | GICC_Init-GICC_CPU;/*中断优先级设置*/GICC-PMR ~(0x1F 3);GICC-PMR | GICC_Init-GICC_priority 3; }8. 使用示例 EXTI_InitTypeDef EXTI_InitStructure;EXTI_InitStructure.EXTI_GPIOx EXTI_GPIOF;EXTI_InitStructure.EXTI_Line 9;EXTI_InitStructure.EXTI_Trigger EXTI_Trigger_Falling;EXTI_InitStructure.EXTI_Wakeup 1;EXTI_Init(EXTI_InitStructure);EXTI_InitStructure.EXTI_Line 8;EXTI_Init(EXTI_InitStructure);EXTI_InitStructure.EXTI_Line 7;EXTI_Init(EXTI_InitStructure);GICD_InitTypeDef GICD_InitStructure;GICD_InitStructure.GICD_CPU GIC_CPU0;GICD_InitStructure.GICD_Allocation_CPU GIC_CPU0;GICD_InitStructure.GICD_priority 0;GICD_InitStructure.GICD_interrupt_ID 99;GICD_Init(GICD_InitStructure);GICD_InitStructure.GICD_priority 1;GICD_InitStructure.GICD_interrupt_ID 98;GICD_Init(GICD_InitStructure);GICD_InitStructure.GICD_priority 2;GICD_InitStructure.GICD_interrupt_ID 97;GICD_Init(GICD_InitStructure);GICC_InitTypeDef GICC_InitStructure;GICC_InitStructure.GICC_priority 4;GICC_InitStructure.GICC_CPU GIC_CPU0;GICC_Init(GICC_InitStructure);
http://www.w-s-a.com/news/502147/

相关文章:

  • 微信网站 微信支付合肥seo排名收费
  • 织梦做的网站如何上线广东省广州市番禺区南村镇
  • 网站设计的导航栏怎么做太原有网站工程公司吗
  • 苏州虎丘区建设局网站如何在一个数据库做两个网站
  • 淘宝天猫优惠券网站建设费用腾讯邮箱企业邮箱登录
  • 深圳福田做网站公司海航科技网站建设
  • 网站降权查询wordpress更换文章背景色
  • 大型电商网站开发金融企业网站建设公司
  • 成都营销型网站建设价格化妆品品牌推广方案
  • 深圳公司手机网站制作苏州网站推广哪家好
  • 网站建设开发方式包括购买学校网站建设费计入什么科目
  • 做简单网站的框架图中小微企业查询平台
  • 哪些网站可以免费做产品推广建设建设部网站
  • 网站开发销售怎么做django做网站
  • 淘宝客网站做百度竞价万网域名怎么绑定网站
  • 建设网站找哪个公司北京知名大公司有哪些
  • 专业彩票网站开发网站流量在哪设置
  • 网站建设对应的岗位榆林做网站公司
  • 网站建设公司怎么算专业js网站分页怎么做
  • 网和网站的区别phpcms和帝国cms哪个好
  • wordpress改网站名字长沙网络营销外包
  • 宝塔怎么做第二个网站网站内容设计遵循的原则有
  • 网站违反了 google 质量指南免费ppt模版网站
  • 郑州网站建设郑州网站建设成都那家网站建设好
  • 温州网站排名优化公司如何招聘软件网站开发人员
  • 成都 网站建设公司哪家好襄阳行业网站建设
  • wordpress 调用时间做网站seo的公司哪家好
  • 手机上网站搭建网站账户系统
  • 西乡网站的建设柳州建站
  • 宁夏网站建设怎么样互联网 网站设计