历史上的今天
返回首页

历史上的今天

今天是:2025年02月03日(星期一)

2020年02月03日 | STM32单片机的Usart2串口的调试方法

2020-02-03 来源:elecfans

先是参考http://wenku.baidu.com/view/78f6b1350b4c2e3f572763e9.html调通了usart1

然后将程序进行修改,对Usart2进行配置,配置完了之后,程序还是没有正确,然后在voidGPIO_cfg();函数中添加一句

GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

STM32单片机的Usart2串口的调试方法

最后程序如下,

#include“stm32f10x_lib.h”

FlagStatusRX_status;

FlagStatusTx_status;

voidRCC_cfg(void);

voidGPIO_cfg(void);

voidUSART_cfg(void);

voidNVIC_cfg(void);

unsignedcharRxbuf[20];

intindex_send,index_rev;

u8flag;

intmain()

{

inTI;

unsignedcharTxBuf1[]=“WelcometomySTM32!I‘midiot!”;

index_send=0;

index_rev=0;

flag=0;

RCC_cfg();

GPIO_cfg();

NVIC_cfg();

USART_cfg();

//清除标志位,否则第1位数据会丢失

USART_ClearFlag(USART2,USART_FLAG_TC);

//发送数据

//PB5的作用是显示正在发送数据

//当有数据在发送的时候,PB5会亮

for(i=0;TxBuf1[i]!=’‘;i++)

{

USART_SendData(USART2,TxBuf1[i]);

GPIO_SetBits(GPIOB,GPIO_Pin_5);

//等待数据发送完毕

while(USART_GetFlagStatus(USART2,USART_FLAG_TC)==RESET);

GPIO_ResetBits(GPIOB,GPIO_Pin_5);

}

while(1)

{

}

}

//RCC时钟配置

voidRCC_cfg()

{

//将RCC寄存器重新设置为默认值

RCC_DeInit();

//打开GPIO时钟,复用功能,串口1的时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO,ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

}

//IO口配置

voidGPIO_cfg()

{

GPIO_InitTypeDefGPIO_InitStructure;

//PAD5作为US2的TX端,打开复用,负责发送数据

GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

GPIO_StrucTInit(&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_Init(GPIOD,&GPIO_InitStructure);

//PD6作为US2的RX端,负责接收数据

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOD,&GPIO_InitStructure);

//LED显示串口正在发送/接收数据

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

GPIO_Init(GPIOB,&GPIO_InitStructure);

}

//串口初始化

voidUSART_cfg()

{

USART_InitTypeDefUSART_InitStructure;

//将结构体设置为缺省状态

USART_StrucTInit(&USART_InitStructure);

//波特率设置为115200

USART_InitStructure.USART_BaudRate=115200;

//一帧数据的宽度设置为8bits

USART_InitStructure.USART_WordLength=USART_WordLength_8b;

//在帧结尾传输1个停止位

USART_InitStructure.USART_StopBits=USART_StopBits_1;

//奇偶失能模式,无奇偶校验

USART_InitStructure.USART_Parity=USART_Parity_No;

//发送/接收使能

USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;

//硬件流控制失能

USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;

//设置串口2

USART_Init(USART2,&USART_InitStructure);

//打开串口2的中断响应函数,接收中断

USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);

//打开串口2

USART_Cmd(USART2,ENABLE);

}

//配置中断

voidNVIC_cfg()

{

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//选择中断分组2

NVIC_InitStructur

推荐阅读

史海拾趣

诚润电子(CHEVRON)公司的发展小趣事

随着公司业务的不断发展,诚润电子开始积极拓展海外市场。他们通过参加国际展会、与海外客户建立合作关系等方式,逐渐将产品推向全球。在这个过程中,诚润电子不仅提升了自身的品牌知名度,还积累了丰富的国际市场经验。如今,诚润电子的产品已经出口到多个国家和地区,成为了全球电子保护元件领域的重要供应商之一。

Advanced Electronic Packaging公司的发展小趣事

随着国内市场的逐渐饱和,Advanced Electronic Packaging公司开始将目光投向海外市场。公司积极参与国际电子展会和技术交流活动,展示其先进的封装技术和优质产品。同时,公司还加大了对海外市场的宣传力度,通过线上线下相结合的方式提升品牌知名度和影响力。在不懈的努力下,公司的产品和服务逐渐赢得了国际市场的认可和青睐,海外市场份额逐年攀升。

EDAL公司的发展小趣事

随着云计算、大数据等技术的兴起,传统EDA行业面临着前所未有的挑战。为了应对这些挑战,EDAL公司积极转型升级,将云计算、大数据等技术与EDA工具相结合,推出了更加高效、智能的云端EDA服务。这一创新的服务模式不仅提升了客户的设计效率,还降低了成本,赢得了市场的广泛认可。

Chen Yang Technologies GmbH & Co KG公司的发展小趣事

随着业务的发展,Chen Yang Technologies意识到单靠自身力量难以实现快速扩张。因此,公司开始积极寻求与其他电子行业巨头的战略合作。通过与这些公司的合作,Chen Yang Technologies不仅获得了更多的资金支持和技术资源,还成功进入了新的市场领域。这些合作使得公司的业务范围得到了极大的拓展,同时也提升了公司的品牌影响力。

BILIN公司的发展小趣事

在快速发展的过程中,Chen Yang Technologies始终重视内部管理和人才培养。公司推行了一系列创新的管理理念和措施,如扁平化管理、项目制运作等,这些措施有效提高了工作效率和团队协作能力。同时,公司还注重人才培养和引进,通过设立激励机制、提供培训和发展机会等方式,吸引和留住了一批优秀的技术人才和管理人才。

Daito Communication Apparatus Co Ltd公司的发展小趣事

随着微电子学的快速发展,电子设备对元器件的要求也越来越高。Daito公司敏锐地捕捉到了这一市场趋势,决定对保险丝进行进一步的创新。在1995年,他们成功开发出了适用于电路板安装的高精度小型报警保险丝。这一产品的推出,不仅满足了市场对小型化、高精度保险丝的需求,也进一步巩固了Daito公司在电子行业中的领先地位。

随后,Daito公司又针对微电子学的进一步发展,推出了可以连续自动安装的方形微型保险丝。这一产品的推出,大大提高了生产效率,降低了成本,同时也为客户提供了更加便捷的使用体验。近年来,随着面安装技术的兴起,Daito公司又迅速推出了适用于面安装技术的片状保险丝,再次展示了他们在电子行业中的创新实力。

请注意,由于篇幅限制,以上仅为两个故事示例。如果需要更多故事,可以进一步深入研究和探索Daito公司在电子行业中的发展历程和创新实践。

问答坊 | AI 解惑

ModBus

Modbus协议   摘 要:工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。   关键词:Modbus协议;串行通信;LRC校验;CRC校验;RS-232C ...…

查看全部问答>

MTK LCD 驱动初始化

有哪位大虾能告诉我下面这段驱动初始化程序代码都做了上面 void LCD_Init_S6B33BF(kal_uint32 bkground, void **buf_addr) {         volatile kal_uint32 i;         kal_uint16 background = (kal_u ...…

查看全部问答>

sql ce 数据库数次开关后无法连接问题请教,急。。。

各位朋友好,我遇到的问题是:我在wince5.0中用ado访问sql ce数据库,平时连接数据库、读写数据库都没问题,我的程序是定时3秒写一个70个字段的数据,当我反复开关设备时(我们的设备是硬关机,即直接关电源,没有关机键),在一定次数后再打开程序 ...…

查看全部问答>

高手请进!..郁闷的问题:

1、为什么我用NdisAllocateMemoryWithTag申请内存后,在NdisFreeMemory释放!有时候会蓝屏 我用 NdisAllocateMemoryWithTag(&pPacketContent,TotalPacketLength,TAG); 申请后 在释放的时候用 if(pPacketContent) NdisFreeMemory(pPacketConte ...…

查看全部问答>

TI有那几款双核控制器

TI有那几款双核控制器啊,比较成熟点儿的,M0和M4;M0和M3;DSP和M3;DSP和M4的都行…

查看全部问答>

fatfs中f_read函数中参数 void* buff, /* [OUT] Buffer to store read data */的大小

我需要read的是一个txt文件。这个文件有345600行,每行是一个三位小数。好像buff中存储的最大值不能超过512*128。那像我,现在需要存储所有的值,需要345600*5。是不是应该分段读入。但是我不明白的是,即使分段读入了。我也需要都存储在float的那 ...…

查看全部问答>

BBB 入门基础之针对Angstrom系统的OpenCV交叉编译

本帖最后由 lonerzf 于 2014-8-3 18:16 编辑 有个论坛的朋友遇到了点困难,原因很简单,我之前有个地方没讲明白。活动虽然结束了,但是这个缺少的工作还得补上呀。 上正题。 一、宿主机编译Opencv实际上是为了能添加一些目录啥的,不进 ...…

查看全部问答>

C2000学习之[2]:导入controlSUITE的示例工程

本帖最后由 nemo1991 于 2015-3-16 17:01 编辑 TI为C2000系列DSP创建的controlSUITE组件包包含了丰富的技术资源。对于入门学习而言,示例程序是非常重要的学习资料。以下,将介绍如何使用controlsuite的示例工程。注意:示例中使用的是自制的TMS3 ...…

查看全部问答>

【Altera SoC】基于SOPC的单通道TDC设计(2)

接上一篇帖子:https://bbs.eeworld.com.cn/thread-465441-1-1.html 1.4 Nios II顶层源程序`timescale 1 ps / 1 psmodule audio_nios (                input  wire   & ...…

查看全部问答>