因项目需要特意配置了该段代码,不喜勿喷,纯属个人笔记。
对于串口的代码网上也是很多,无非是配置问题,该代码是基于stm32f103c8t6来编程的。
接线:
USART STM32
GND GND
T PA3
R PA2
在项目文件内创建usart2.c文件与usart.h文件,将文件导进去进行相关串口配置便可,
以下相关配置可根据用户手册与历程代码修改。
/*·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý*/
void UART2SendByte(unsigned char SendData)
{
USART_SendData(USART2,SendData);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
/*½ÓÊÕÒ»¸ö×Ö½ÚÊý¾Ý*/
unsigned char UART2GetByte(unsigned char* GetData)
{
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET)
{ return 0;//ûÓÐÊÕµ½Êý¾Ý
}
*GetData = USART_ReceiveData(USART2);
return 1;//ÊÕµ½Êý¾Ý
}
/*½ÓÊÕÒ»¸öÊý¾Ý£¬ÂíÉÏ·µ»Ø½ÓÊÕµ½µÄÕâ¸öÊý¾Ý*/
void UART2Test(void)
{
unsigned char i = 0;
while(1)
{
while(UART2GetByte(&i))
{
USART_SendData(USART2,i);
}
}
}
那么接下来就是相关printf函数的配置了
1 .MDK配置
到工程属性的Target -> Use MicroLIB 把勾上
2. 在usart2函数中要包含“stdio.h”
3. 重定向 “fputc” 函数,直接粘贴复制进目标文件即可
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
void _sys_exit(int x)
{
x = x;
}
//fgetcÖض¨Ïò
int fputc(int ch, FILE *f)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,(uint8_t)ch);
return ch;
}
#endif
配置完成后便可使用
因项目需要特意配置了该段代码,不喜勿喷,纯属个人笔记。
对于串口的代码网上也是很多,无非是配置问题,该代码是基于stm32f103c8t6来编程的。
接线:
USART STM32
GND GND
T PA3
R PA2
在项目文件内创建usart2.c文件与usart.h文件,将文件导进去进行相关串口配置便可,
以下相关配置可根据用户手册与历程代码修改。
/*·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ý*/
void UART2SendByte(unsigned char SendData)
{
USART_SendData(USART2,SendData);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
/*½ÓÊÕÒ»¸ö×Ö½ÚÊý¾Ý*/
unsigned char UART2GetByte(unsigned char* GetData)
{
if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET)
{ return 0;//ûÓÐÊÕµ½Êý¾Ý
}
*GetData = USART_ReceiveData(USART2);
return 1;//ÊÕµ½Êý¾Ý
}
/*½ÓÊÕÒ»¸öÊý¾Ý£¬ÂíÉÏ·µ»Ø½ÓÊÕµ½µÄÕâ¸öÊý¾Ý*/
void UART2Test(void)
{
unsigned char i = 0;
while(1)
{
while(UART2GetByte(&i))
{
USART_SendData(USART2,i);
}
}
}
那么接下来就是相关printf函数的配置了
1 .MDK配置
到工程属性的Target -> Use MicroLIB 把勾上
2. 在usart2函数中要包含“stdio.h”
3. 重定向 “fputc” 函数,直接粘贴复制进目标文件即可
#if 1
#pragma import(__use_no_semihosting)
struct __FILE
{
int handle;
};
FILE __stdout;
void _sys_exit(int x)
{
x = x;
}
//fgetcÖض¨Ïò
int fputc(int ch, FILE *f)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);
USART_SendData(USART2,(uint8_t)ch);
return ch;
}
#endif
配置完成后便可使用
举报