UART1管脚重定义使用的,内部ROM还支持升级吗?

[复制链接]
5895|19
 楼主| jinqiu 发表于 2010-8-30 13:42 | 显示全部楼层 |阅读模式
有明确的说法吗?谢谢
香水城 发表于 2010-8-30 13:51 | 显示全部楼层
支持。
 楼主| jinqiu 发表于 2010-8-30 13:53 | 显示全部楼层
谢谢版主,意思就是ROM程序会尝试所有的USART1的管脚各种配置直到与PC上的更新软件通讯成功,是这样吧?
香水城 发表于 2010-8-30 13:58 | 显示全部楼层
谢谢版主,意思就是ROM程序会尝试所有的USART1的管脚各种配置直到与PC上的更新软件通讯成功,是这样吧?
jinqiu 发表于 2010-8-30 13:53


你指的是什么型号的芯片?
 楼主| jinqiu 发表于 2010-8-30 14:02 | 显示全部楼层
具体来说STM32F103ZET6,144封装,我想把PB6和PB7重定义成UART1,这样方便我使用更多的TIMx。我担心以后不能再用内部的ROM通过重定义后的UASRT1升级程序。
香水城 发表于 2010-8-30 14:06 | 显示全部楼层
重定义成UART1是你自己程序的事情,系统存储器中的Bootloader并不做重定义,它只通过默认的USART1端口与PC通信。

不要忘记,系统复位后所有的重定义配置失效。
 楼主| jinqiu 发表于 2010-8-30 14:14 | 显示全部楼层
哦,那就是如果我不按照系统默认的USART1管脚配置来使用,我就不能使用内部ROM来升级应用。谢谢。
-----------------------
另外再请教下上电过程中I/O管脚电平状态是什么样啊?
香水城 发表于 2010-8-30 14:19 | 显示全部楼层
哦,那就是如果我不按照系统默认的USART1管脚配置来使用,我就不能使用内部ROM来升级应用。谢谢。
-----------------------
另外再请教下上电过程中I/O管脚电平状态是什么样啊? ...
jinqiu 发表于 2010-8-30 14:14


随便你USART1管脚怎么配置,这是你的事情;系统重新启动后引脚重定义就失效了!!
Bootloader与你自己的程序是相互独立的。

上电过程中I/O管脚电平状态是默认的浮空输入。
 楼主| jinqiu 发表于 2010-8-30 14:22 | 显示全部楼层
感谢版主的热心解答。我从atmel的arm7刚转过来。
“系统重新启动后引脚重定义就失效了”这块您反复提及是有什么特殊含义吗?
重定义功能应该是我的应用程序的初始化部分配置的,如果重新启动,不是又重新进行了初始化配置吗?
香水城 发表于 2010-8-30 14:42 | 显示全部楼层
感谢版主的热心解答。我从atmel的arm7刚转过来。
“系统重新启动后引脚重定义就失效了”这块您反复提及是有什么特殊含义吗?
重定义功能应该是我的应用程序的初始化部分配置的,如果重新启动,不是又重新进行了初始 ...
jinqiu 发表于 2010-8-30 14:22


不错,如果重新启动,是要重新进行初始化。但是用Bootloader升级Flash的时候,Bootloader的程序并不执行你设定的初始化过程,它执行自己的初始化过程,而这个"它自己的初始化过程"不对USART1进行重新映射。
 楼主| jinqiu 发表于 2010-8-30 15:16 | 显示全部楼层
懂了,多谢。
也就是ROM固化的Bootloader并不会尝试其管脚配置的所有的可能性:)多谢。
---------
再请您给论证下方案的可行性:
STM32F103ZET6,64K RAM,512M Flash,
晶振8M--PPL--->72M,32.768K(6pF)--->内部RTC.
USART×5,波特率9600,3全双工,2半双工
TIM1,TIM3,TIM8共12通通,分别对600HZ的输入脉冲进行测量。
FSMC外接LCD+8×8KeyPad等等,用FSMC_NE1~NE4+地址译码使用
I2C2外接RTC+EEprom.(据说硬件I2C接口有问题?芯片内置RTC精度如何?)
SPI2外接SPI Flash
跑Ucos或同类RTOS.
-------------------------------
这样的方案,那些地方有风险?那些地方需要注意?
香水城 发表于 2010-8-30 15:27 | 显示全部楼层
只要你的引脚分配没有冲突,就没有问题。

只要操作正确,硬件I2C接口很好用。
 楼主| jinqiu 发表于 2010-8-30 15:42 | 显示全部楼层
用Atmel-ARM7时候有个地方挺别扭:
串口:我们的半双工应用情况是发送的数据同时回环到接收线上。正常操作是关闭接收中断-》启动发送中断-》发送结束中断-》关闭发送中断-》打开接收中断。而ATMEL的“发送结束中断”是其发送寄存器内数据为空就会产生,其实这个时候只是将发送寄存器内的数据放到移位寄存器,并没有真正送到线上,我们需要动态根据波特率来延时一个字节时间再打开接受中断,这个挺烦。。
串口配置成ISO7816模式时,校验位只能为偶校验,这样在TS反向约定时候有问题。
这个不知道STM32是否可以规避这些问题?
香水城 发表于 2010-8-30 15:48 | 显示全部楼层
你问的什么问题:STM32的问题?ATMEL的问题?
 楼主| jinqiu 发表于 2010-8-30 15:48 | 显示全部楼层
stm32是否存在同样的问题:)
香水城 发表于 2010-8-30 16:21 | 显示全部楼层
在发送寄存器空标志之外,STM32的USART还有TC位,可以明确知道何时发送结束。
 楼主| jinqiu 发表于 2010-8-30 16:39 | 显示全部楼层
多谢,就是要这个停止位发送后才置位的TC。
xixihaha0 发表于 2010-8-31 09:44 | 显示全部楼层
香主对stm32的太熟悉了,都到寄存器的某一位,stm32的芯片资料太烂了,是我见过的最烂 的
香水城 发表于 2010-8-31 10:13 | 显示全部楼层
香主对stm32的太熟悉了,都到寄存器的某一位,stm32的芯片资料太烂了,是我见过的最烂 的
xixihaha0 发表于 2010-8-31 09:44


哈哈,如果你眼睛里只有石头,捡到美玉也会当成石头扔掉,:lol
hxcic 发表于 2010-8-31 11:16 | 显示全部楼层
继续围观
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

21

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部