发送程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "stm32f10x.h"
int main(void)
{
u8 t=0;
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// éèÖÃÖD¶ÏóÅÏ輶·Ö×é2
uart_init(9600); //′®¿ú3õê¼»ˉÎa9600
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
KEY_Init(); //3õê¼»ˉóë°′¼üᬽóμÄó2¼t½ó¿ú
while(1)
{
t=KEY_Scan(0); //μÃμ½¼üÖμ
switch(t)
{
case KEY0_PRES:
USART_SendData(USART1, '1');
LED0=!LED0;
break;
case KEY1_PRES:
USART_SendData(USART1, '0');
LED1=!LED1;
break;
case WKUP_PRES:
break;
default:
delay_ms(10);
}
}
}
接受程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "stm32f10x.h"
//ALIENTEK Mini STM32¿a·¢°å·¶ày′úÂë2
//°′¼üêäèëêμÑé
//¼¼êõÖ§3Ö£o
www.openedv.com
//1ãÖYêDDÇòíμç×ó¿Æ¼¼óDÏT1«Ë¾
int main(void)
{
u8 len;
u8 t[8];
u8 s;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// éèÖÃÖD¶ÏóÅÏ輶·Ö×é2
uart_init(9600); //′®¿ú3õê¼»ˉÎa9600
delay_init(); //Ñóê±oˉêy3õê¼»ˉ
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
KEY_Init(); //3õê¼»ˉóë°′¼üᬽóμÄó2¼t½ó¿ú
//LED0=0; //μãááLED
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
for(s=0;s<len;s++)
{
t
=USART_RX_BUF;}
while((USART1->SR&0X40)==0);//μè′y·¢Ëí½áêø
USART_RX_STA=0;
//printf("
");//2åèë»»DD
switch(t[0])
{
case '0':
LED0=!LED0;
break;
case '1':
LED1=!LED1;
break;
default:
delay_ms(10);
}
}
}
}
用的是原子哥的按键历程修改,加的串口程序,一个发送:按键1按下,发送‘1’,按键2按下发送‘2’。一个接收,接收到‘1’,led1亮,接收到‘2’,led2亮。分别单独用用电脑串口助手测试是成功的,将两个板子用一个电源供电,PA9,PA10相互反接,没有现象,求助大佬是什么原因?
参考这个帖子:http://www.openedv.com/forum.php?mod=viewthread&tid=285930
一周热门 更多>