OpenEdv-开源电子网

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

107芯片串口UART4升级不成功,请大家指教

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-12-26
在线时间
7 小时
发表于 2017-1-22 20:43:11 | 显示全部楼层 |阅读模式
1金钱
用107芯片的串口UART4进行串口程序升级,以前用串口2,串口1进行升级都成功过,现在用串口4出现各种问题:问题现象1:引导程序在进行地址判断时候,不满足条件
就是这一句  if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)
//判断是否为0X08XXXXXX.
                     {   
                            iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码
                     }else
                     {
                                  Delay_ms(100);  //  。。。。。。。。。。。省略
                     }                        
进不到if里面去,进入else中。可以确认的一点就是,各项设置都正确,包括这个地址设置,
初步解决方法:在APP程序中添加以下语句
RCC->APB1RSTR = 0x00000000;//复位结束                  

       RCC->APB2RSTR = 0x00000000;        

      RCC->AHBENR = 0x00000014;  //睡眠模式闪存和SRAM时钟使能.其他关闭.  

      RCC->APB2ENR = 0x00000000; //外设时钟关闭.                    

      RCC->APB1ENR = 0x00000000;  

       RCC->CR |= 0x00000001;    //使能内部高速时钟HSION           

       RCC->CFGR &= 0xF8FF0000;

//复位SW[1:0],HPRE[3:0],PPRE1[2:0],PPRE2[2:0],ADCPRE[1:0],MCO[2:0]            

       RCC->CR &= 0xFEF6FFFF;  //复位HSEON,CSSON,PLLON

       RCC->CR &= 0xFFFBFFFF;  //复位HSEBYP        

       RCC->CFGR &= 0xFF80FFFF;//复位PLLSRC, PLLXTPRE, PLLMUL[3:0] and USBPRE

       RCC->CIR = 0x00000000;    //关闭所有中断        
重新烧写引导程序和IAP程序,发现就可以跳转了,满足这个判断条件了:if(((*(vu32*)(FLASH_APP1_ADDR+4))&0xFF000000)==0x08000000)
暂时不知道是什么原因,但是发现正点原子例程中,寄存器版本有上述寄存器的操作,库函数版本中却没有,不知道这个如何解释,我出现的这个问题




问题2:可以正常跳转后,我发现我的定时器2和定时器3没有定时,就是不工作,
定时器的打开和操作,都是会用的,从没出过问题,就是不知道为什么跳转后,IAP程序定时器不工作,时钟也使能了,相关的配置也配置了




问题3  如果源程序不改变以下2个地方,程序是可以正常运行的,说明程序没有问题:
  file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\359216499\QQ\WinTemp\RichOle\C7{5HRD%B@4U({6HPX_J2I8.pngfile:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\359216499\QQ\WinTemp\RichOle\C7{5HRD%B@4U({6HPX_J2I8.pngfile:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\359216499\QQ\WinTemp\RichOle\C7{5HRD%B@4U({6HPX_J2I8.png
        SystemInit();        MY_NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x10000);        __enable_irq();


现在不知道为什么了,有谁能解答一下么?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2015-12-26
在线时间
7 小时
 楼主| 发表于 2017-1-22 20:48:37 | 显示全部楼层
还有个问题就是在BOOTLOADER中,用USART_OUT(UART4,"Updata is Over!!  %d \r\n",Count++); 串口助手没有数据输出,这个问题也不清楚,原因出在哪里,串口1,2,3都是用这个函数都没有问题的呀
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 03:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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