打印

有关STM32功能的提问

[复制链接]
4894|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
desomond|  楼主 | 2011-7-18 10:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人用的是STM32F103,现在有一问题,望经验丰富的大侠给予指点。如引脚PA9/USART1_TX/TIM1_CH2和PA10/USART1_RX/TIM1_CH3.....如果我用了USART1_TX和USATR1_RX作为串口输入输出引脚,那么我同时用到了TIM1的通道2和通道3,这会不会相冲突
沙发
香水城| | 2011-7-18 10:49 | 只看该作者
本帖最后由 香水城 于 2011-7-18 10:53 编辑

如果你要使用它们的输入输出功能,就会有冲突。

使用特权

评论回复
板凳
desomond|  楼主 | 2011-7-18 10:57 | 只看该作者
多谢香主如此用心,这么快就回答了。按照这种推理的话,虽然每一个引脚上都列出了很多的功能,但是如果用到了其一,就不能用其他的功能了吗?例如:PA3/USART2_RX/TIM5_CH4/ADC123_IN3/TIM2_CH4,是不是表示TIM5的通道4和TIM2的通道4不能同时用呢?

使用特权

评论回复
地板
香水城| | 2011-7-18 11:09 | 只看该作者
如果你要使用它们的输入输出功能,就会有冲突。

反之,如果你不使用它们的输入输出功能,就不会有冲突。比如需要TIM5的通道4做输入输出,但TIM2的通道4不做输入输出,只做内部定时,就不会有冲突!

使用特权

评论回复
5
desomond|  楼主 | 2011-7-18 11:12 | 只看该作者
哦,原来如此....唉,在做PCB板硬件设计的时候没有考虑到这一点,现在在做程序上面出了一些问题,才开始怀疑会是这方面的问题,香主经验丰富啊........这些STM32的说明文档上面有吗?我看了一下好像没有看到

使用特权

评论回复
6
香水城| | 2011-7-18 11:15 | 只看该作者
一个引脚怎么可能同时输出两种信号呢?这是常识问题。

使用特权

评论回复
7
desomond|  楼主 | 2011-7-18 11:17 | 只看该作者
我可能没说明白,我的意思是这个引脚只用于输入串口信号,虽然用到了TIM1——ch2定时,但是,定时器并不用到引脚,它只用到定时作用

使用特权

评论回复
8
desomond|  楼主 | 2011-7-18 11:21 | 只看该作者
本人用的是STM32F103,现在有一问题,望经验丰富的大侠给予指点。如引脚PA9/USART1_TX/TIM1_CH2和PA10/USART1_RX/TIM1_CH3.....如果我用了USART1_TX和USATR1_RX作为串口输入输出引脚,那么我同时用到了TIM1的通道2和 ...
desomond 发表于 2011-7-18 10:42
问题补充,我用到了USART1_TX和USATR1_RX作为串口输入输出引脚,同时TIM作定时器,它不输入输出,没有用到引脚

使用特权

评论回复
9
香水城| | 2011-7-18 11:27 | 只看该作者
你用的具体型号是什么?查查它的勘误手册。

使用特权

评论回复
10
desomond|  楼主 | 2011-7-18 11:30 | 只看该作者
哦,我用的是STM30F103RCT6,勘误手册在哪里可以查到的呢。。。我就是用到TIM1的时候,串口接收不到数据的,官方网站上应该会有吧

使用特权

评论回复
11
香水城| | 2011-7-18 12:24 | 只看该作者
问题补充,我用到了USART1_TX和USATR1_RX作为串口输入输出引脚,同时TIM作定时器,它不输入输出,没有用到引脚
desomond 发表于 2011-7-18 11:21


没有用到输入输出,只要不使能定时器的输出,就不会有冲突。

勘误手册可以在ST网站查到。

使用特权

评论回复
12
ShakaLeo| | 2011-7-18 12:28 | 只看该作者
检查一下初始化的时候是否把USART1的TX和RX脚重映射到了别的引脚上。

使用特权

评论回复
13
pananmao3760675| | 2011-7-18 12:45 | 只看该作者
不错,以前有用过

使用特权

评论回复
14
desomond|  楼主 | 2011-7-18 15:31 | 只看该作者
没有用到输入输出,只要不使能定时器的输出,就不会有冲突。

勘误手册可以在ST网站查到。
香水城 发表于 2011-7-18 12:24

有点不明白“只要不使能定时器的输出”这句话,我要用到USART1_TX,USART1_Rx就必须配置GPIO,为  /***配置USART1 RX的GPIO****/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
   GPIO_Init(GPIOA, &GPIO_InitStructure);
/****配置USART1 TX的GPIO****/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
同时,我要使用TIM1,就必须要使能TIM_Cmd(TIM1, ENABLE);同时,我TIM1的TIM1_OCInitStruct.TIM_OCMode = TIM_OCMode_Timing;  
    TIM1_OCInitStruct.TIM_Pulse = 65535;//CaptureVal;
    TIM1_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_Low;要使输出不使能,是要加上这句吗?TIM1_OCInitStruct.TIM_OutputState = TIM_OutputState_Disable ;
对于使能输出,不是很理解,还望香主指点

使用特权

评论回复
15
desomond|  楼主 | 2011-7-18 15:32 | 只看该作者
要使输出失能,是要加上TIM1_OCInitStruct.TIM_OutputState = TIM_OutputState_Disable ;这句吗?难道说默认是enable,我之前是没有加的

使用特权

评论回复
16
eydj2008| | 2011-7-18 17:41 | 只看该作者
会 需要映射IO 到其它脚 就可以 使用二个功能

使用特权

评论回复
17
yinyangdianzi| | 2011-7-19 15:44 | 只看该作者
学习了

使用特权

评论回复
18
desomond|  楼主 | 2011-7-20 09:29 | 只看该作者
检查一下初始化的时候是否把USART1的TX和RX脚重映射到了别的引脚上。
ShakaLeo 发表于 2011-7-18 12:28

没有映射到其他引脚上去,用的就是原来的usart1

使用特权

评论回复
19
香水城| | 2011-7-20 09:59 | 只看该作者
你试过15楼的这个TIM_OutputState_Disable吗?结果如何?

使用特权

评论回复
20
desomond|  楼主 | 2011-7-20 10:23 | 只看该作者
15楼的之前就试过了,刚才重新测了一次,还是不可以的....

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

109

帖子

3

粉丝