|
原子的程序里面printf函數(shù)默認(rèn)是打印串口1的內(nèi)容,下面分享將printf函數(shù)改為打印別的串口的內(nèi)容的方法
原子的usart.c中,能找到如下代碼
//加入以下代碼,支持printf函數(shù),而不需要選擇use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//標(biāo)準(zhǔn)庫(kù)需要的支持函數(shù)
struct __FILE
{
int handle;
};
FILE __stdout;
//定義_sys_exit()以避免使用半主機(jī)模式
_sys_exit(int x)
{
x = x;
}
//重定義fputc函數(shù)
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
USART1->DR = (u8) ch;
return ch;
}
#endif
/*使用microLib的方法*/
/*
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {}
return ch;
}
int GetKey (void) {
while (!(USART1->SR & USART_FLAG_RXNE));
return ((int)(USART1->DR & 0x1FF));
}
*/
如果你建立工程時(shí)沒(méi)有勾選魔法棒里面的use microLib選項(xiàng),只需把上面的
nt fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
USART1->DR = (u8) ch;
return ch;
}
改為
nt fputc(int ch, FILE *f)
{
while((USART2->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢
USART2->DR = (u8) ch;
return ch;
}
即可
如果勾選了的話(huà),注釋掉代碼中/*使用microLib的方法*/前的代碼,取消后面的代碼的注釋?zhuān)凑胀瑯拥姆椒ㄐ薷膄putc函數(shù)即可
附:原子DMA實(shí)驗(yàn)中用串口二打印DMA1傳輸串口1數(shù)據(jù)的進(jìn)度代碼
|
評(píng)分
-
查看全部評(píng)分
|