1. 通过SPI下载程序时,Boot0=1,Boot1=0,同时 复位STM32。
2. J-Link硬件仿真时,Boot0=0,Boot1=0,否则无法进入断点。
3.
模式 | BOOT1 | BOOT0 |
Flash | x | 0 |
ISP | 0 | 1 |
SRAM | 1 | 1 |
APB1: DA, USB, SPI, I2C, CAN, 串口2 3 4 5, 普通TIM
APB2: AD, I/O, 高级TIM, 串口1
5. 在USART中断函数中,
如果if(USART_GetITStatus(USART1, USART_IT_RXNE)==SET){...}不能过,将其改为:
ITStatus ErrorITStatus = USART_GetITStatus(USART1, USART_IT_RXNE);
if(ErrorITStatus == SET){...}
至于为什么,我也不明白,求解...
关于串口中断函数的问题,经过我反复试验无效,在即将崩溃的时候,把整个项目重新编译了一边,然后可以了....
6. JLink调试,无法进入main函数
如果JLink调试出现错误,无法进入main函数。
将程序多余的代码注释掉,写几段最简单的代码在main函数体中,比如:
int main(void){
u8 i;
for(i=0;i<10;i++){}
}
然后试着用JLink调试该段代码,如果调试成功,再尝试调试原来的代码。
7. 要注意,在配置GPIO等外设前必须先开启相应的时钟,不然配置无效。