新手上路
- 积分
- 37
- 金钱
- 37
- 注册时间
- 2014-11-3
- 在线时间
- 0 小时
|
5金钱
这是主程序:
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
int main(void)
{
u8 t;
u8 len;
u16 times=0;
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;
printf("\r\n?ú·???????????:\r\n");
if(USART_SX_STA)
{
for(t=0;t<len;t++)
{
USART1->DR=USART_RX_BUF[t];
}
if(USART_RX_BUF[t]=='\0')
USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
USART_SX_STA=0;
}
printf("\r\n\r\n");
USART_RX_STA=0;
}else
{
times++;
if(times%5000==0)
{
printf("\r\nALIENTEK MiniSTM32??·?°? ?®?????é\r\n");
printf("??????×?@ALIENTEK\r\n\r\n\r\n");
}
if(times%200==0)printf("。。。。。\r\n");
if(times%30==0)LED0=!LED0;
delay_ms(10);
}
}
}
下面是中断处理函数:
if(USART_GetITStatus(USART1,USART_IT_TXE)==RESET)
{
USART_SX_STA=1;
}
在uart_init中开的中断,其他设置跟实验3一样
USART_ITConfig(USART1, USART_IT_TXE, ENABLE);//这是开中断 |
最佳答案
查看完整内容[请看2#楼]
回复【3楼】lhj:
---------------------------------
if(USART_GetITStatus(USART1,USART_IT_TXE)==RESET) 这儿 该用" != " 吧
|