- Options for Tartet .. -> Debug ==J-LINK/J-TRACE Cortex –> Settings –> ort == JTAG/SW
- Options for Tartet .. -> Utilities –>Use Tarte Driver for Flash Programming == J-LINK/J-TRACE Cortex
A: stm32 上电后这几个管脚默认作为 jtag 功能脚.
想要释放这几个管脚作为普通 GPIO 使用,必须切换此脚的功能.否则对管脚的所有 GPIO 操作都不会生效.
需要配置的寄存器为:
AFIO_MAPR[26:24] –> SWJ_CFG
(Serial Wire JTAG Configuration)
注: 1.需要特别注意的是,在操作 AFIO_MAPR
寄存器之前必须先打开 AFIO
时钟.
2.在使用 jtag 调试代码时,如果代码操作 AFIO_MAPR
寄存器来禁止 SWJ 功能 会报错.
A: 对寄存器 AFIO_EVCR
, AFIO_MAPR
和 AFIO_EXTICRX
进行读写操作前,应当首先打开 AFIO的时钟。
A: STM32中文参考手册:2.4[P33]
STM32有三种启动模式,如下表:
1.ST公司在出厂时给 MCU 的 ROM 中固化了一段启动代码(类似 bootloader,并且无法修改/删除)
用于 ISP (In-system programming).所以想要使用 串口进行 ISP 烧录程序必须从表中 模式2 启动!
注: 因此在使用 ISP 烧录程序时后需要把,BOOT0置 0 ,否者导致程序不运行.
2.BOOT1 即管脚 PB2,只在系统上电后 第4个上升沿时钟 用于控制启动模式。之后就被释放,可用于正常的 GPIO。
所以一般 PB2 管脚的硬件电路设计都连接一下拉电阻接地.
A: 由于 开发板把 PA9 、PA10 两个管脚用于 usb otg 功能,所以需要使用 USART1 需要把对应引脚复用到 PD6、PD7
A: 这是由于变量声明在语句之后,c++里面是正常的,现在的很多c编译器也允许。但是最早的c是不许这么写的,keil 也要求所有的局部变量必须在函数开头声明。int main(void)
{
PLLCON = 1; // 这个(以及下面若干行)就是所谓的“executable statement ”
......
uint8 sec; // 这就是“declaration ”,会在此处报错
A: 默认情况下 stm32 库是不支持 bool
类型的.需要包含头文件: stdbool.h