(2)半双工通信:
/*
*函数名 :fputc
*描述 :重定向C库函数printf到USART2
* 输入 :无
* 输出 :无
* 调用 :由printf调用
*/
int fputc(int ch,FILE *f)
{
//while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
USART_SendData(USART2,(unsigned char)ch);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
return (ch);
}
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*
*/
#include "printf.h"
#include
int main()
{
int i;
/* USART init 115200 8-N-1 */
USART_init();
printf("\r\n hahahhahahahahaha \r\n");
printf("\r\n 欢迎使用奋斗stm32开发板 \r\n");
}
/*
* 函数名:main
* 描述 :主函数
* 输入 :无
* 输出 :无
*
*/
#include "printf.h"
#include
int main()
{
int i;
/* USART init 115200 8-N-1 */
USART_init();
printf("\r\n hahahhahahahahaha \r\n");
printf("\r\n 欢迎使用奋斗stm32开发板 \r\n");
}
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"
#include "printf.h"
#include "misc.h"
#include "stm32f10x.h"
/*
*函数名 :fputc
*描述 :重定向C库函数printf到USART2
* 输入 :无
* 输出 :无
* 调用 :由printf调用
*/
int fputc(int ch,FILE *f)
{
while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
USART_SendData(USART2,(unsigned char)ch);
while(USART_GetFlagStatus(USART2,USART_FLAG_TC) != SET);
return (ch);
}
/*
* 函数名 :USART_init
* 描述 :USART GPIO 配置,工作模式配置。115200 8—N-1
* 输入 :无
* 输出 :无
* 调用 :外部调用
*/
void USART_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
/*config USART2 clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
/*USART2 GPIO config*/
/* configure USART2 Tx (PA.02) as alternate function push-pull*/
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP; //复用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure);
/* configure USART2 Rx (PA.03) as alternate function push-pull*/
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IN_FLOATING; //复用开漏输入
GPIO_Init(GPIOA,&GPIO_InitStructure);
/*USART2 mode Config*/
USART_InitStructure.USART_BaudRate = 115200;
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1,&USART_InitStructure);
USART_Cmd(USART1,ENABLE);
}
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"
#include "stm32f10x.h"
#include
extern void USART_init(void);
extern int fputc(int ch, FILE *f);