小弟最近在編寫程式時發現了三個警告,但我一值找不到解決的辦法
目前有三個我無法去除的警告
..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的初始化)
- void Wayne_Init_NVIC(void)
- {
- NVIC->IP[TIM16_IRQn>>2] |= 3 << ( (TIM16_IRQn&0x3)*8 + 6 ); //設定優先權3
- NVIC->IP[USART1_IRQn>>2] |= 2 << ( (USART1_IRQn&0x3)*8 + 6 ); //設定優先權3
-
- NVIC->ISER[0] |= 1 << TIM16_IRQn //TIM16中斷啟用
- | 1 << USART1_IRQn; //USART1中斷啟用
- }
复制代码
..SrcWayne_Init.c(78): warning: #61-D: integer operation result is out of range
I2C1->TIMINGR = 0x0F<< 28
這一項的來源是中斷(I2C的初始化)
- I2C1->TIMINGR = 0x0F<< 28 //除頻值= 48M/(7+1) = 3MHz
- | 0x0F<< 20 //數據建立時間(4bit) = 16
- | 0x0F<< 16 //數據保持時間(4bit) = 16
- | 0xFF<< 8 //高電平保持時間(8bit)= 32
- | 0xFF<< 0; //低電平保持時間(8bit)= 32
复制代码
請各位幫我看看,是不是我哪裡寫錯了
試過了,看不出為啥發生
然後系統掛掉...
畢竟這幾個是非常重要的關鍵性初始化
没有错,就是这个死样子。移位多了就出 warning
- 1 /**
- 2 * @brief 配置嵌套向量中断控制器 NVIC
- 3 * @param 无
- 4 * @retval 无
- 5 */
- 6 static void NVIC_Config_PWM(void)
- 7 {
- 8 NVIC_InitTypeDef NVIC_InitStructure;
- 9
- 10 /* Configure one bit for preemption priority */
- 11 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- 12
- 13 /* 配置 TIM3_IRQ 中断为中断源 */
- 14 NVIC_InitStructure.NVIC_IRQChannel = BRE_TIMx_IRQn;
- 15 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- 16 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
- 17 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- 18 NVIC_Init(&NVIC_InitStructure);
- 19 }
复制代码为什么人家的NVIC是这样配置的?
一周热门 更多>