功能:上位机发送给mcu,mcu原原本本发送给上位机
**main关键代码**
while(
1)
{
if(flag==
1)
{
len=usart_sta&
0xffff;
for(t=
0;t<len;t++)
{
Uart1_PutChar(usart_array[t]);
}
printf(
"\r\n");
flag=
0;
usart_sta=
0;
}
else
times++;
if(times%
30==
0) LED0=!LED0;
delay_ms(
10);
}
**usart.h关键代码**
#define usart_len
10
extern u8 usart_array[usart_len];
extern u8 usart_sta;
extern u8 flag;
**usart.c关键代码**
u8 usart_array[usart_len];
u8 flag=
0;
u8 usart_sta=
0;
void Uart1_PutChar(
u8 ch)
{
USART_SendData(USART1,ch);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
}
void USART1_IRQHandler(void)
{
u8 Res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) == SET)
{
Res=USART_ReceiveData(USART1);
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);
if(flag==
0)
{
usart_array[usart_sta&
0xffff]=Res;
usart_sta++;
if(usart_sta>usart_len)
{
usart_sta=
0;
printf(
"\r\n输入错误\r\n");
}
if(Res==
0x0d)
{
flag=
1;
}
}
}
}
USART设置步骤:
1.开启串口、GPIO时钟
2.串口引脚初始化(TX/RX)
3.NVIC配置(优先级/通道..)
4.USART初始化设置(波特率/字长/奇偶校验..)
5.开启串口的中断方式(TC/RXNE..)
6.使能串口
【
7.中断处理函数】(函数名在startup_stm32f1010x_hd.s)
皇图霸业谈笑中,不胜今宵一场醉...
转载请注明原文地址: https://ju.6miu.com/read-25495.html