这里整理一下,虽然一直在用SWD的模式调试自己的函数,不过还是要再学习一下,是否有别的遗漏。
有关PA13、PA14、PA15、PB3、PB4的5个管脚就再深入整理一遍。添加一个正点原子的表格,

第一个状态,复位以后的状态,因为stm32默认的复位以后这5个管脚是进入JTAG状态的。所以5个管脚都不能作为I/O使用。
第二个状态,将PB4变成I/O口使用,(nJTRST是仿真器调试时的JTAG对内核的调试复位信号,一般用于信号调试,建议不要用作他用。)这个管脚原先就是调试用的,JTAG也可以下载程序。
第三个状态,将JTAG关闭了,没有关闭SWD,我一直使用就是这个,如果I/O不够的话我就更换了单片机,所以PA13、PA14我一直是在设计电路的时候保留的,专门给下载程序跟调试程序用。
第四个状态,就是将JTAG跟SWJ一起关闭。全部I/O都可以使用,JTAG跟SWJ就不能下载了,如果要下载程序,我记得用ST-LINK来下载。
对这些进行函数库设置用到的函数:
JTAG/SWD模式设置库函数 (在文件stm32f10x_gpio.c中): void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)//这个就是我们需要设置的函数。
下面是函数声明文件,函数位于stm32f10x_gpio.h中196-198三行,也就是我们设置用到的设置函数。
#define GPIO_Remap_SWJ_NoJTRST ((uint32_t)0x00300100) /*!< Full SWJ Enabled (JTAG-DP + SW-DP) but without JTRST */这是第二个状态
#define GPIO_Remap_SWJ_JTAGDisable ((uint32_t)0x00300200) /*!< JTAG-DP Disabled and SW-DP Enabled */这是第三个状态
#define GPIO_Remap_SWJ_Disable ((uint32_t)0x00300400) /*!< Full SWJ Disabled (JTAG-DP + SW-DP) */这是第四个状态。
有关JTAG跟SWD的管脚定义我们可以根据需要来使用接口,下面放出正点原子的接线图:
我下载跟调试程序使用到的SWJ的4根线,就使用的7跟9两管脚跟VCC+GND。
软件仿真:
第一次知道呢,一直以来我都是使用的外接线路板的仿真,这里可以使用软件本身进行仿真。这里我就直接将正点原子的复制过来了,虽然可以跟着视频做,不过防止忘掉,也顺便推给大家。
软件仿真虽然并不准确,硬件仿真才准确,但是对于没有线路板跟成品板等来说这个很有用呢。毕竟可以学习到很多东西,只有去实际使用的时候,再进行细部的调整。
在开始软件仿真之前,先检查一下配置是不是正确,在 IDE 里面点击 ,确定 Target 选项卡内容如图 3.4.1.1 所示(主要检查芯片型号和晶振频率,其他的一般默认就可以):这里补充一下,晶振的频率,我之前只知道默认(12MHz)从来没改过(8MHz),然后后面指导的前辈不知道我有这个问题,就没讲到这里,所以对后面程序里面用到的延时函数才会出现错误,要求不高的函数是没问题的,但是如果要求精确的时间,这里计时的准确很重要。


1万+

被折叠的 条评论
为什么被折叠?



