1.当配置了jtag做IO引脚,并禁用了sw和jtag下载功能时把程序下载进去会发现下次下载程序会下载不了提示“no target connect”,这时可以按住reset,点download,再松开reset即可。
2.STM32上所有的外设的基地址都是0x4000 0000(这其实是ARM公司规定的),这也是APB1的起始地址,APB2以及AHB的基地址都是基于0x4000 0000的,同时其他外设的地址又是基于APB1,APB2,AHB的。关于寄存器的定义以及外设地址的定义都在stm32f103xe.h.
#define PERIPH_BASE ((uint32_t)0x40000000) /*!< Peripheral base address in the alias region */
/*!< Peripheral memory map */
#define APB1PERIPH_BASE PERIPH_BASE
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define AHBPERIPH_BASE (PERIPH_BASE + 0x20000)
#define TIM2_BASE (APB1PERIPH_BASE + 0x0000)
#define TIM3_BASE (APB1PERIPH_BASE + 0x0400)
3.hex文件和bin文件的区别是hex文件带有从flash地址0x0800 0000,而bin文件只有数据无地址,地址需要下载时上位机指定,比如0x0800 0000。从下面的图对比就看出来了,都是mdk生成的hex和bin.
4.ISP串口读命令,必须设置偶校验,然后发0x7f后回0x79,(1)发命令11EE(2)地址比如:0800000008(3)字节数和其反码,并不是手册所说的补码比如:0ff0