首页 > 代码库 > 模拟串口输出
模拟串口输出
最近在调试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,PB1111 //// GPIOB->CRH |= 0x00004100;12 //// GPIOB->BSRR |= (0x0001<<10);13 //14 // UART5->CR1 &=~ (1<<7);15 // GPIOC->CRH &= 0xFFF0FFFF; //uart 5,PC12TX,PD2RX16 // 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); //960039 // // Delay_UART5(1076); //3840040 // // Delay_UART5(818);41 // Delay_UART5(1000);42 //43 // GPIOC->BRR |= (0x0001<<12);44 // // Delay_UART5(1076); //usart end45 // // 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 // else54 // GPIOC->BRR |= (0x0001<<12);55 // // Delay_UART5(1076); //usart end56 // // Delay_UART5(269);57 // // Delay_UART5(205);58 // Delay_UART5(260);59 // }60 // GPIOC->BSRR |= (0x0001<<12);61 // // Delay_UART5(1076*2); //usart end62 // // Delay_UART5(538);63 // // Delay_UART5(410);64 // ;Delay_UART5(500);65 // }66 // }67 // }68 //}
会有两个问题:1,延时函数需要调节,延时要在26us,不同模块都要调
2,进入后去SP的值时候因为变量等原因SP的地址已经改变了
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。