最近在調試hardfault handler輸出日誌信息時候得到了Vincent幫助,感謝函數
1 void Delay_UART5(uint16_t cnt) 2 { 3 for(;cnt;cnt--); 4 }
1 //void HardFault_Handler(void) //uart5 38400 2 //{ 3 // 4 // uint32_t addrbegin=__get_MSP() ; //???·?· 5 uint32_t addr; 6 // uint8_t i, j, str; 7 // uint16_t loopcnt=0; 8 // 9 //// USART3->CR1 &=~ (1<<7); 10 //// GPIOB->CRH &= 0xFFFF00FF; //uart 3,PB10,PB11 11 //// GPIOB->CRH |= 0x00004100; 12 //// GPIOB->BSRR |= (0x0001<<10); 13 // 14 // UART5->CR1 &=~ (1<<7); 15 // GPIOC->CRH &= 0xFFF0FFFF; //uart 5,PC12TX,PD2RX 16 // GPIOC->CRH |= 0x10000; 17 // GPIOC->BSRR |= (0x0001<<12); 18 // 19 // while(1) 20 // { 21 // Delay_UART5(7969); 22 // loopcnt++; 23 // GPIOC->BSRR |= (0x0001<<12); 24 // 25 // if(loopcnt > 3000) 26 // { 27 // 28 // addr= addrbegin+0x30; 29 // loopcnt=0; 30 // for(i=0; i<255; i++) 31 // { 32 // 33 // str= (*(uint8_t*) addr--); 34 // 35 // if(i>250) 36 // str = '\r'; 37 // 38 // // Delay_UART5(1076*4); //9600 39 // // Delay_UART5(1076); //38400 40 // // Delay_UART5(818); 41 // Delay_UART5(1000); 42 // 43 // GPIOC->BRR |= (0x0001<<12); 44 // // Delay_UART5(1076); //usart end 45 // // Delay_UART5(269); 46 // // Delay_UART5(205); 47 // Delay_UART5(260); 48 // 49 // for(j=0; j<8; j++) 50 // { 51 // if((str&(0x01<<j))) 52 // GPIOC->BSRR |= (0x0001<<12); 53 // else 54 // GPIOC->BRR |= (0x0001<<12); 55 // // Delay_UART5(1076); //usart end 56 // // Delay_UART5(269); 57 // // Delay_UART5(205); 58 // Delay_UART5(260); 59 // } 60 // GPIOC->BSRR |= (0x0001<<12); 61 // // Delay_UART5(1076*2); //usart end 62 // // Delay_UART5(538); 63 // // Delay_UART5(410); 64 // ;Delay_UART5(500); 65 // } 66 // } 67 // } 68 //}
會有兩個問題:1,延時函數須要調節,延時要在26us,不一樣模塊都要調oop
2,進入後去SP的值時候由於變量等緣由SP的地址已經改變了ui