历史上的今天

今天是:2024年10月17日(星期四)

正在发生

2018年10月17日 | 串口实验改用串口2实现

发布者:数字火花 来源: eefocus关键字:串口实验  串口2 手机看文章 扫描二维码
随时随地手机看文章

一。串口2初始化

void uart_init(u32 bound)

{

  NVIC_InitTypeDef NVIC_InitStructure;

  GPIO_InitTypeDef GPIO_InitStructure;

  USART_InitTypeDef USART_InitStructure;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // GPIOA时钟

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); //串口2的时钟来自PCLK1

   USART_DeInit(USART2);  //复位串口2

   //USART2_TX   PA.2

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //PA.2

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

  GPIO_Init(GPIOA, &GPIO_InitStructure); //初始化PA2

   

    //USART2_RX   PA.3

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//浮空输入

  GPIO_Init(GPIOA, &GPIO_InitStructure);  //初始化PA3

USART_InitStructure.USART_BaudRate = bound;  //设置波特率

USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字长为8位数据格式

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(USART2, &USART_InitStructure); //初始化串口2

NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2 ;//抢占优先级3

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; //子优先级3

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能

NVIC_Init(&NVIC_InitStructure); //根据指定的参数初始化VIC寄存器

  USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);//开启串口接受中断

  USART_Cmd(USART2, ENABLE);                    //使能串口2

}

二。printf函数设置

//////////////////////////////////////////////////////////////////

//加入以下代码,支持printf函数,而不需要选择use MicroLIB  

#if 1

#pragma import(__use_no_semihosting)             

//标准库需要的支持函数                 

struct __FILE 

int handle; 

}; 

FILE __stdout;       

//定义_sys_exit()以避免使用半主机模式    

_sys_exit(int x) 

x = x; 

//重定义fputc函数 

int fputc(int ch, FILE *f)

{      

while((USART2->SR&0X40)==0);//循环发送,直到发送完毕   

        USART2->DR = (u8) ch;      

return ch;

}

#endif 

三。串口2的中断服务函数

void USART2_IRQHandler(void)                 //串口2中断服务程序

{

    u8 Res;

    #if SYSTEM_SUPPORT_OS //如果SYSTEM_SUPPORT_OS为真,则需要支持OS.

    OSIntEnter();    

    #endif

    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a      结尾)

    {

Res =USART_ReceiveData(USART2); //读取接收到的数据

if((USART_RX_STA&0x8000)==0)//接收未完成

{

if(USART_RX_STA&0x4000)//接收到了0x0d

{

         if(Res!=0x0a)USART_RX_STA=0;//接收错误,重新开始

else USART_RX_STA|=0x8000; //接收完成了 

}

else //还没收到0X0D

{

if(Res==0x0d)USART_RX_STA|=0x4000;

else

{

USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;

USART_RX_STA++;

if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//接收数据错误,重新开始接                                 收  

}  

}

}    

 } 


关键字:串口实验  串口2 引用地址:串口实验改用串口2实现

上一篇:49. RTC实验讲解
下一篇:通过串口给STM32烧写程序

推荐阅读

开发环境:uVision : V5.12.0.0 STM32F103V8T6库版本 : STM32F10x_StdPeriph_Lib_V3.5.0FATSF : ff13a 下载地址:http://elm-chan.org/fsw/ff/00index_e.html问题:在使用STM32的FATS文件系统,对SD卡进行文件读写时候,往往会碰到“FR_NO_FILESYSTEM:没有有效的FAT卷”的问题。原因:SD卡在格式化的时候,格式化的格式不对。解决办法:使...
  1.引言  通常微波所指的是分米波、厘米波和毫米波。关于其频率范围,一种说法是:  300MHz ~ 300GHz(1MHz =106Hz,1GHz =109 )相应的自由空间中的波长约为1m~1mm.  微波技术的兴起和蓬勃发展,使得国内大多数高校都开设微波技术课程。但还存在以下问题:测量时,由手工逐点移动探头并记录各点读数,然后手工计算实验结果并绘图。测量项目单一、精...
10月15日上午消息,中国手机厂商一加今日在国内举行新品发布会,推出一加8T手机,定价3399元起。跟其他中国手机厂商不同的是,一加依旧坚持旗舰精品战略而非机海战术,每年的手机产品只有两大系列少数几款产品。他们发布规律往往是春季数字系列,秋季数字+T,后者是前者的升级产品。今年一加的节奏依旧如此,所以从春季到秋季,一加 8后续来了,它叫8T。...
上个月,realme推出了GT Neo系列新品GT Neo2,现在GT Neo系列即将迎来新成员。今天,realme副总裁徐起宣布,realme将于10月19日发布realme GT Neo2T手机。海报显示,realme GT Neo2T包装盒上的“李宁设计”四个大字非常醒目,表明这是一款由李宁设计的手机。徐起介绍,realme GT Neo2T携手李宁跨界共创,采用全新的设计工艺,将科技与中国潮流融合。...

史海拾趣

问答坊 | AI 解惑

高纯度捷变频频率源研制

摘 要:介绍了一种新颖的L波段低相噪、捷变频频率合成器。该方案所设计的频率合成器是一种可预置频率的合成器。在方案中,运用2个锁相环,选择其中一个作为工作环,另外一个作为预置环(即:一个环工作,同时另一环预置下一工作频点,锁相环锁定时间不影响 ...…

查看全部问答∨

Proteus元件库中文对照

嘿嘿!  这个好像也没人发过哦!…

查看全部问答∨

电源可能出什么呀?

本帖最后由 paulhyde 于 2014-9-15 09:43 编辑  …

查看全部问答∨

扫描仪 EMC设计整改案例

本帖最后由 jameswangsynnex 于 2015-3-3 20:01 编辑 1、产品及 EMC问题描述 2、问题分析 根据频谱图可以看出既有窄带尖峰干扰又存在宽带电源干扰,根据定位测试和频谱分析,确定100M左右的宽带干扰为外购电源适配器产生,更换后干扰消除, ...…

查看全部问答∨

请教高手一个程序编译问题!

我在网上下了一个简单的C#控制GPIO的演示程序,Project type 选的是c#\\smart device\\win ce5.0,模板选的是device application,可是程序编译下来出错了,错误信息部分如下: Error        4        Th ...…

查看全部问答∨

移植嵌入式linux 子网掩码 奇怪问题

      我移植snapgear(内核2.4)到IXP425板上,但是发现设置IP和子网掩码后,Bcast就是不对,比如:ip为10.10.62.X,子网掩码不管设为什么,生成的Bcast始终为10.255.255.255;当ip设成130.10.10.X时,子网掩码不管设为什么, ...…

查看全部问答∨

小弟想学习usb 2.0 驱动开发,帮我推荐一个学习板吧,谢谢。

  由于种种原因,分析了自己的发展方向,决定往驱动方面发展,各位高手能不能帮我推荐一个适合初学者的开发板? 需求:1.usb 2.0 的开发板,用于驱动开发 学习       2.写程序工具   (1)推荐一款编程 ...…

查看全部问答∨

用二进制信号量来实现计数信号量

    我在看郑扣根翻译的操作系统,里面用二进制信号量来实现计数信号量这一节没看懂,哪位大侠给解释一下: 设s为计数信号量。二进制信号量S1,S2,INT 变量C。开始时:S1=0,S2=0,整数C的值设置为计数信号量S的初值。 计数信号量S的 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved