外部中断无法触发的可能原因

(1)未打开外部时钟AFIO;
(2)中断函数名有误;
(3)检查外部中断初始化与中断控制器初始化的语法语句,可能漏写或线路不匹配;
(4)中断函数触发方式错误(或端口输入设置出错)
可通过函数EXTI_GenerateSWInterrupt()生成中断检查配置情况。如果能正常进入中断函数,说明是硬件与接口的问题。(如HC-SR501电平不稳定,消抖以后可能无法触发中断。)
可用GPIO_ReadInputDataBit测试GPIO口的情况。

USART

需要对printf函数重定向才能向串口输出。具体分为需要设置Use MicroLIB和添加其他函数的两种方法,具体可参见野火和正点的教程

可能会报错:XXX.axf: Error: L6218E: Undefined symbol xxx (referred from xxxx.o). 出现这种错误的原因除了未引入头文件或路径未正确设置外,也可能是因为全局变量无法在build时顺利拓展至全局(很奇怪,必须在.c文件下重新进行声明才能使用在别的.h文件里定义的全局变量)。可在xxxx.o对应的.c文件下重新对变量/函数进行定义声明。

HC05

HC05模块蓝牙直接与电脑蓝牙连接不稳定(可能是驱动、协议或别的什么原因,在电脑上打开串口很难),最好是使用USB转TTL接口,在电脑上连接一个HC05模块进行收发。或在手机上下载串口调试软件,能够与蓝牙正常连接。

HC05/06模块的三种工作模式(这三种工作模式是HC05/06共有的,并且通过模块上的LED反映出来)

1.待连接模式 HC05:快速闪灯 HC06:快速闪灯

该模式下,若蓝牙模块被设置为从机,则等待其他设备连接,若为主机,就会搜寻可连接的设备

2.AT模式 HC05:慢速闪灯 HC06:快速闪灯、

该模式下,可以通过从串口发送AT指令,对蓝牙模块的名称,密码,波特率,主从机等属性进行设置,具体的AT指令此处不加以赘述,网上一查就有,需要注意的是HC05发送AT指令时必须以\r\n结尾,而HC06则不能以\r\n结尾,否则都会导致没有响应的错误出现

3.连接模式 HC05:长亮灯 HC06:长亮灯

已经成功与其他设备连接后进入的模式。