历史上的今天
今天是: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);

最后程序如下,
#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
史海拾趣
|
有哪位大虾能告诉我下面这段驱动初始化程序代码都做了上面 void LCD_Init_S6B33BF(kal_uint32 bkground, void **buf_addr) { volatile kal_uint32 i; kal_uint16 background = (kal_u ...… 查看全部问答> |
|
各位朋友好,我遇到的问题是:我在wince5.0中用ado访问sql ce数据库,平时连接数据库、读写数据库都没问题,我的程序是定时3秒写一个70个字段的数据,当我反复开关设备时(我们的设备是硬关机,即直接关电源,没有关机键),在一定次数后再打开程序 ...… 查看全部问答> |
|
1、为什么我用NdisAllocateMemoryWithTag申请内存后,在NdisFreeMemory释放!有时候会蓝屏 我用 NdisAllocateMemoryWithTag(&pPacketContent,TotalPacketLength,TAG); 申请后 在释放的时候用 if(pPacketContent) NdisFreeMemory(pPacketConte ...… 查看全部问答> |
|
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 & ...… 查看全部问答> |




