我想要一块开发板,控制另一块开发板。思路是,通过发送板上按不同的按键从而通过连接两个板子的引脚上分别输出1,2,3,4这四个数给另一块开发板。从而另一块开发板根据分别接收到的1,2,3,4做出相应的指令。但一直都不成功,代码逻辑上都对。串口都已经初始化,io口也都复用了。代码逻辑是无错的。
我在想是不是引脚的问题。在发送板中按相应的键,然后输出1,2,3,4到引脚上,通过引脚输入到另一块板子上,接收到的是不是就不是相应的数字了???
只知道 引脚可以输出高低电平,还有PWM波。引脚可以输出数字吗????
这是发送板的中断函数。RES可以通过引脚向另一块板子输出1,2,3,4吗??
void USART1_IRQHandler(void) //串口1中断服务程序
{
u8 Res;
if(USART_GetITStatus(USART1, USART_FLAG_RXNE)==SET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
Res=KEY_Scan(1); //得到键值
USART_SendData(USART1,Res);//向串口寄存器写入一个数据
USART_ClearFlag(USART1, USART_FLAG_RXNE);
}
}
接收板程序
void USART1_IRQHandler(void) //串口1中断服务程序
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾)
{
key=USART_ReceiveData(USART1);//STM32读取串口1中的数据
switch(key)
{
case 1: //控制蜂鸣器
BEEP=!BEEP;
break;
case 2: //控制LED0翻转
LED0=!LED0;
break;
case 3: //控制LED1翻转
LED1=!LED1;
break;
case 4: //同时控制LED0,LED1翻转
LED0=!LED0;
LED1=!LED1;
break;
}
}
USART_ClearFlag(USART1,USART_FLAG_RXNE);
}
如果不是引脚的问题,那是不是我的中断类型不正确,不应该用 USART_FLAG_RXNE??
望大佬指点,,这几天真快被折磨死了.........
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>