野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13831|回复: 9

【火哥求助】关于串口通信的

[复制链接]
发表于 2016-9-6 01:48:25 | 显示全部楼层 |阅读模式

void gpio_usart_config(void){
        GPIO_InitTypeDef goip_usart1;
        USART_InitTypeDef usart_1;
       
        //初始化TX
        goip_usart1.GPIO_Pin = GPIO_Pin_9;
        goip_usart1.GPIO_Mode = GPIO_Mode_AF_PP;
        goip_usart1.GPIO_Speed = GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOA, &goip_usart1);
       
        //初始化RX
        goip_usart1.GPIO_Pin = GPIO_Pin_10;
        goip_usart1.GPIO_Mode = GPIO_Mode_IN_FLOATING;
       
        GPIO_Init(GPIOA, &goip_usart1);
       
        //打开时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);
       
       
        /*  初始化串口通信  */
       
        usart_1.USART_BaudRate = 115200;
        usart_1.USART_HardwareFlowControl = USART_HardwareFlowControl_None ;
        usart_1.USART_Mode =  USART_Mode_Tx;
        usart_1.USART_Parity = USART_Parity_No;
        usart_1.USART_StopBits = USART_StopBits_1;
        usart_1.USART_WordLength = USART_WordLength_8b;

        USART_Init(USART1, &usart_1);

}


void senddata_1(USART_TypeDef* pUSARTx, uint8_t data){
        USART_SendData(pUSARTx, data);
        while(USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);
}

int main(void)
{
        gpio_usart_config();       
        USART_Cmd(USART1, ENABLE);
        senddata_1(USART1,100);
       
       
        while(1){
        //无限循环
        }
       
}


void USART1_IRQHandler(void){

}



如上初始化了串口,可是烧到板里,怎么reset电脑都收不到东西。
对照视频的代码看了几遍了,还是找不到问题。请问火哥哪里出错了
我使用usb下载程序的。


回复

使用道具 举报

发表于 2016-9-6 08:47:16 | 显示全部楼层
先下载例程,确认下你选的com口对不对
回复 支持 反对

使用道具 举报

发表于 2016-9-6 09:46:47 | 显示全部楼层
用火哥配套的串口调试助手,也要安装CH340的串口驱动
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-6 13:11:19 | 显示全部楼层
flyleaf 发表于 2016-9-6 08:47
先下载例程,确认下你选的com口对不对

刚刚试过了 例程没问题。。。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-6 13:12:00 | 显示全部楼层
惆怅还依旧 发表于 2016-9-6 09:46
用火哥配套的串口调试助手,也要安装CH340的串口驱动

我装了。我用usb下载程序就装了驱动了
回复 支持 反对

使用道具 举报

发表于 2016-9-6 13:59:52 | 显示全部楼层
duaguy 发表于 2016-9-6 13:11
刚刚试过了 例程没问题。。。

那就分模块把类似功能的代码替换成例程的,然后测试看看行不行。

另外,我觉得你的时钟初始化应该放在最前面
回复 支持 反对

使用道具 举报

发表于 2016-9-6 14:57:25 | 显示全部楼层
你的程序只有发送,没有接收。
usart_1.USART_Mode =  USART_Mode_Tx;改为
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-6 15:00:27 | 显示全部楼层
flyleaf 发表于 2016-9-6 13:59
那就分模块把类似功能的代码替换成例程的,然后测试看看行不行。

另外,我觉得你的时钟初始化应该放在 ...

行了。。把时钟放在前面真的行了。。。原来是要一定先开时钟才能配置gpio的=- =学习了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-6 15:01:37 | 显示全部楼层
牧梦苍穹 发表于 2016-9-6 14:57
你的程序只有发送,没有接收。
usart_1.USART_Mode =  USART_Mode_Tx;改为
USART_InitStructur ...

我就想试下发送先。已经解决了,时钟初始化应该放在前面
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-6 15:02:05 | 显示全部楼层
谢谢各位啦
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 17:35 , Processed in 0.039034 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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