OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9228|回复: 14

串口1,2都成功了,但是,串口3无法收到数据(基于战舰V3)

[复制链接]

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
发表于 2016-3-6 23:16:33 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 yahopo 于 2016-3-7 00:26 编辑

如题。程序是基于战舰V3,(STM32_cortex-M3)

串口1,串口2,都成功了。串口3不行。波特率9600

有几个疑问:
1.是否,我的线接错了。

    ①我看了原理图,是不是串口3也是接在9针接口,然后转USB。
    ②如果①成立,那么我串口2,假如使用的是CMO8,那我串口3,是不是也是用COM8接收。(我电脑端也没其它COM端口了,另外一个COM7是串口1,试过了也不行)

程序测试:我现在,程序是利用M3向PC端循环发送0xFF。串口3毫无响应。

2.通过仿真。
    ①我的程序没有跑飞
    ②引脚属性正常

各位大神,我需要改动哪里???







串口3跳线帽

串口3跳线帽

串口3接口

串口3接口

串口3属性

串口3属性

串口3引脚 PA10,PA11属性

串口3引脚 PA10,PA11属性

最佳答案

查看完整内容[请看2#楼]

http://www.openedv.com/forum.php?mod=viewthread&tid=67784&page=1#pid385831 我试过STM32F103ZET6的5个串口,你拿去试一下
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

108

帖子

0

精华

高级会员

Rank: 4

积分
630
金钱
630
注册时间
2016-2-5
在线时间
100 小时
发表于 2016-3-6 23:16:34 | 显示全部楼层
回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-3-6 23:17:15 | 显示全部楼层
本帖最后由 yahopo 于 2016-3-7 00:27 编辑

主函数

int main(void)
{

        
        led_init();
        delay_init();
        key_init();
//        usart1_init(115200);
//        usart2_init(9600);
        usart3_init(9600);
        
        
        
        while(1)
        {
               
                usart3_send_data(0xff);
        }
        
}
回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-3-6 23:18:52 | 显示全部楼层
本帖最后由 yahopo 于 2016-3-8 20:27 编辑


/* C 文件 */
#include "usart3.h"



/* 串口3: RXDB11 TXDB10 */



void usart3_init(u32 baud_rate)
{
        float USART_DIV;//串口波特率分频系数
        u16 DIV_Mantissa;//整数
        u16 DIV_Fraction;//小数
        
        /* 时钟·引脚配置 */
        RCC->APB2ENR |= 1<<3 ;//PB时钟
        
        GPIOB->CRH &= 0xffff00ff;
        GPIOB->CRH |= 0x00008900;//上拉输入  推挽输出10MHz
        GPIOB->ODR |= 1<<11;
        
        RCC->APB1ENR |= 1<<18;//串口3时钟_36MHZ
        
        /* 波特率 */
        USART_DIV = (float)36000000/16/baud_rate;//得出波特率系数:39.0625
        DIV_Mantissa = USART_DIV;
        DIV_Fraction = (USART_DIV - DIV_Mantissa)*16;//转16进制整数,才可以填入
        USART3->BRR = (DIV_Mantissa<<4) | (DIV_Fraction);
        
        /* 数据帧 */
        USART3->CR1 &= ~(1<<12);//8位数据位
        USART3->CR1 &= ~(1<<10);//关闭奇偶校验
        USART3->CR2 &= ~(0x3<<12);//1个停止位
        
        /* 全双工模式 */
        USART3->CR1 |= 1<<3;//允许发送
        USART3->CR1 |= 1<<2;//允许接收
        USART3->CR3 &= ~(1<<3);//不使用半双工

//        usart3_nvic_init();//接收缓冲区非空,触发中断

        USART3->CR1 |= 1<<13;//开启串口1        

}

void usart3_send_data(u8 data)
{
        while(!(USART3->SR & (1<<6)));//等待发送完成
        USART3->DR = data;
}








回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-3-6 23:34:11 | 显示全部楼层
本帖最后由 yahopo 于 2016-3-7 16:22 编辑

@正点原子 原子哥,求破。
回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-3-8 20:21:21 | 显示全部楼层
没人理
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-9 22:59:07 | 显示全部楼层
短接COM3_RX和TX,做回环测试,先确定下RS232端,是否正常.
回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-3-9 23:56:29 | 显示全部楼层
本帖最后由 yahopo 于 2016-3-9 23:59 编辑
正点原子 发表于 2016-3-9 22:59
短接COM3_RX和TX,做回环测试,先确定下RS232端,是否正常.

短接:COM3_RX和TX,都不接,直接悬空???

暂时还不知道什么是回环测试喔。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-10 00:15:50 | 显示全部楼层
yahopo 发表于 2016-3-9 23:56
短接:COM3_RX和TX,都不接,直接悬空???

暂时还不知道什么是回环测试喔。

回环测试。
你理解下这个字面意思。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2016-3-30 21:21:58 | 显示全部楼层
回环测试  就是  把  RX 与 TX 连接在一起  所发送的就是所接收的
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复

使用道具 举报

3

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-5-4
在线时间
1 小时
发表于 2016-4-26 23:06:52 | 显示全部楼层
把RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3|RCC_APB2Periph_GPIOB, ENABLE);
改为       
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3,ENABLE);
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
7
金钱
7
注册时间
2016-9-9
在线时间
0 小时
发表于 2016-9-9 17:10:22 | 显示全部楼层
我也是这个问题,直接下载了你的“串口3”程序,中断函数USART3_IRQHandler根本没有执行,而是直接进入了HardFault_Handler,不知道怎么回事,我急需使用这个串口。



另,串口4和串口5在哪里?
回复

使用道具 举报

17

主题

46

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2016-9-9
在线时间
94 小时
发表于 2016-12-13 15:41:15 | 显示全部楼层
我的串口3也有问题
回复

使用道具 举报

5

主题

47

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
229
金钱
229
注册时间
2015-8-25
在线时间
56 小时
 楼主| 发表于 2016-12-16 18:11:23 | 显示全部楼层
toinspire 发表于 2016-9-9 17:10
我也是这个问题,直接下载了你的“串口3”程序,中断函数USART3_IRQHandler根本没有执行,而是直接进入了Ha ...

F103只有3个串口,你看下手册。
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2016-3-27
在线时间
17 小时
发表于 2017-5-1 15:00:30 | 显示全部楼层
toinspire 发表于 2016-9-9 17:10
**** 作者被禁止或删除 内容自动屏蔽 ****

我的也是哎,到底什么问题啊,解决了没有?
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-8-21 20:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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