找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2746|回复: 0
打印 上一主题 下一主题
收起左侧

STM32学习之USART(串口通信)

[复制链接]
跳转到指定楼层
楼主
ID:75926 发表于 2015-4-10 17:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void USART1_Configuration()//设置USART1

{
       GPIO_InitTypeDef      GPIO_InitStructure;//设置GPIO口用的结构体
       USART_InitTypeDef    USART_Init_Structure;//设置USART的结构体
       GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//这个管脚接TXD
       GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;//选择复用推挽式输出
       GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
       GPIO_Init(GPIOA,&GPIO_InitStructure);
       GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;//这个管脚接RXD
       GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//选择浮空输入
       GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHZ;
       GPIO_Init(GPIOA,&GPIO_InitStructure);
       USART_Init_Structure.USART_BaudRate=9600;//设置波特率(每秒钟传输的位数)
       USART_Init_Structure.USART_StopBits=USART_StopBits_1;//选择停止位 1
       USART_Init_Structure.USART_Party=UART_Party_No;//不用奇偶校验
USART_Iinit_Structure_USART_HardwareFlowcontrol=USART_HardwareFlowcontrol_None;//不使用硬件流控制
       USART_InitStructure_USART_Mode=USART_Mode_Rx|USART_Mode_Tx;//选择USART的接收和发送使能
       USART_Init(USART1,&USART_InitStructure);
       USART_Cmd(USART1,ENABLE);//使能USART1;
}
经过这样的设置USART1就可以用了 使用USART_SendData(USART1,待发送数据);
也可以使用重映射过的 printfh 函数来发送数据.
重映射过程如下
Int fputc(intch,FILE *f)//需要添加 stdio.h 头文件
{
       USART_SendData(USART1,ch);
        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//这段话表示如果发送数据没有结束 就听在这里等待
}      
经过以上的配置可以发送和接受数据 但是不能产生USART中断
需要USART中断可以 这样设置
voidNVIC_Configuration()
{
       NVIC_InitTypeDef       NVIC_InitStructure;
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
       NVIC_InitStructure.IROChannel=USART1_IRQn;
       NVIC_InitStructure.IRQChannelPreemPtionPriority=0;
       NVIC_InitStructure.IRQChannelSubPriority=0;
       NVIC_InitStructure.IPQChannelCmd=ENABLE;
       NVIC_Init(&NVIC_InitStructure);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表