您的位置 首页 国产IC

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

STM32单片机的Usart2串口的调试方法-先是参考http://wenku.baidu.com/view/78f6b1350b4c2e3f572763e9.html调通了usart1

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

GPIO_PinRemapConfig(GPIO_Remap_USART2,ENABLE);

先是参阅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]!=’\0‘;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

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/ic/346770.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部