Keil v5 警告問題 找不到警告的原因

2019-12-16 22:38发布

小弟最近在編寫程式時發現了三個警告,但我一值找不到解決的辦法

目前有三個我無法去除的警告
..SrcWayne_Init.c(42): warning:  #61-D: integer operation result is out of range
NVIC->IP[USART1_IRQn>>2]|=        2        <<        ( (USART1_IRQn&0x3)*8 + 6 );
..SrcWayne_Init.c(42): warning:  #68-D: integer conversion resulted in a change of sign
NVIC->IP[USART1_IRQn>>2]|=        2        <<        ( (USART1_IRQn&0x3)*8 + 6 );

這兩項的來源是中斷(NVIC的初始化)

  1. void        Wayne_Init_NVIC(void)
  2. {
  3.                 NVIC->IP[TIM16_IRQn>>2]        |=        3        <<        ( (TIM16_IRQn&0x3)*8 + 6 );        //設定優先權3
  4.                 NVIC->IP[USART1_IRQn>>2]        |=        2        <<        ( (USART1_IRQn&0x3)*8 + 6 );        //設定優先權3
  5.                
  6.                 NVIC->ISER[0]                                |=        1        <<        TIM16_IRQn                                //TIM16中斷啟用
  7.                                                                 |        1        <<        USART1_IRQn;                                //USART1中斷啟用
  8. }
复制代码



..SrcWayne_Init.c(78): warning:  #61-D: integer operation result is out of range
I2C1->TIMINGR        =                0x0F<<        28
這一項的來源是中斷(I2C的初始化)
  1.                 I2C1->TIMINGR        =                0x0F<<        28        //除頻值= 48M/(7+1)                =        3MHz
  2.                                                 |                0x0F<<        20        //數據建立時間(4bit)        =        16
  3.                                                 |                0x0F<<        16        //數據保持時間(4bit)        =        16
  4.                                                 |                0xFF<<        8        //高電平保持時間(8bit)=        32
  5.                                                 |                0xFF<<        0;        //低電平保持時間(8bit)=        32
复制代码

請各位幫我看看,是不是我哪裡寫錯了
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。