我把USART0的 TX RX引脚通过1个1K限流保护电阻 接到USB-AF插件的D+ D-,原来初始化如下
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);
USB插件悬空的时候,串口不会无缘无故进入接收中断。
当我将USB转4P杜邦线插头插入母座,就发现会USART0会不断进入中断,并把接收字符弄为0。
如果USB转4P杜邦线 外接固定电平(比如普通的USB转TTL工具的RX TX),则不会发生上述情况。
一直用这种初始化好多年,现在发现还是有不妥的地方,比如串口连接的对象不在咋办? 细节还是决定成败。
改为:gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
gpio_init(GPIOA, GPIO_MODE_IPU, GPIO_OSPEED_50MHZ, GPIO_PIN_10); 确定即便没有外部设备连接下,也可以内部弱拉高,就可以避免该问题。 |