嗨,我目前正在从事USART通讯,试图从任何GPIO引脚发送和接收数据。
在接收时,我成功地以任何波特率传输数据,但我陷入了困境。
我一次可以收到一个角色。该引脚通过RX引脚设置为外部下降沿中断。
但是,当我从终端向控制器传输“ test”之类的字符串时,仅收到“ t”,其余3个字符为垃圾值。我以为收到第一个字符并将其保存后,中断对于下一个字符的触发速度不会那么快。
在此示例代码中,出于测试目的,许多事情都进行了硬编码。
这里是接收器的示例代码
void EXTI0_IRQHandler(void){
r0 = GPIOA->IDR;
delay_us(delay_time);
r1 = GPIOA->IDR;
delay_us(delay_time);
r2 = GPIOA->IDR;
delay_us(delay_time);
r3 = GPIOA->IDR;
delay_us(delay_time);
r4 = GPIOA->IDR;
delay_us(delay_time);
r5 = GPIOA->IDR;
delay_us(delay_time);
r6 = GPIOA->IDR;
delay_us(delay_time);
r7 = GPIOA->IDR;
delay_us(delay_time);
r8 = GPIOA->IDR;
delay_us(delay_time);
r9 = GPIOA->IDR;
delay_us(delay_time);
r1 = r1 & 0x00000001;
r2 = r2 & 0x00000001;
r3 = r3 & 0x00000001;
r4 = r4 & 0x00000001;
r5 = r5 & 0x00000001;
r6 = r6 & 0x00000001; …Run Code Online (Sandbox Code Playgroud)