OpenEdv-开源电子网

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

IAP升级程序后,APP无法进入中断

[复制链接]

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
发表于 2018-8-9 11:19:24 | 显示全部楼层 |阅读模式
5金钱
我的IAP和APP中都开启了USART1接收中断,但是在APP执行过程中,当USART1接收到数据时,只能跳转到IAP中的USART1中断处理函数,不会执行APP的中断处理函数。网上有的方法都尝试过了,还是不行。我在APP中加入了按键控制发送,就是按下按键后,就通过USART1发送一个1给上位机,是可以实现的,也就是串口是正常的,但就是进不了APP的中断处理函数。我的APP在FLASH起始地址及中断向量便宜设置如下: 1.png

int main()
{

        SCB->VTOR = FLASH_BASE | 0x3000;
       
        RCC_INIT();
        USART_GPIO_INIT();
        NVIC_INIT();
        USART_INIT();
        LED_Init();
        while(1)
        {
                LED_Sets(0x0F);
        }
}



最佳答案

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

你工程没改VECT_TAB_OFFSET的值,就不要把SystemInit放进工程里,因为系统初始化函数会初始化中断向量表的。去掉SystemInit,如果你要自定义时钟就参考例程自己重写一个RCC_Config替代它。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-8-9 11:19:25 | 显示全部楼层
你工程没改VECT_TAB_OFFSET的值,就不要把SystemInit放进工程里,因为系统初始化函数会初始化中断向量表的。去掉SystemInit,如果你要自定义时钟就参考例程自己重写一个RCC_Config替代它。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-9 16:47:07 | 显示全部楼层
求助啊~!急死了~
回复

使用道具 举报

6

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2017-9-28
在线时间
73 小时
发表于 2018-8-9 16:58:55 | 显示全部楼层
在APP里打开中断enable__irq();函数
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-9 17:15:54 | 显示全部楼层
PURSRE 发表于 2018-8-9 16:58
在APP里打开中断enable__irq();函数

试过了,在IAP中跳转之前关闭中断,然后在APP中打开中断,还是不行。
回复

使用道具 举报

6

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
196
金钱
196
注册时间
2017-7-18
在线时间
31 小时
发表于 2018-8-14 09:48:57 | 显示全部楼层
int main()
{               
  NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000);
  __enable_irq();
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-14 19:57:05 | 显示全部楼层
zdphpn 发表于 2018-8-14 09:48
int main()
{               
  NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x3000);

试过了,不行!
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-5-8
在线时间
32 小时
发表于 2018-8-20 09:34:16 | 显示全部楼层
楼主 你的成功了吗?我也遇到这个问题了啊!
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-8-20 09:56:19 | 显示全部楼层
中断向量表,需要跳转,
回复

使用道具 举报

62

主题

903

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3566
金钱
3566
注册时间
2016-1-8
在线时间
544 小时
发表于 2018-8-20 09:56:52 | 显示全部楼层
是重映射
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-20 09:57:58 | 显示全部楼层
中断向量表重映射啊....
猪猪熊呢?
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-20 15:18:45 | 显示全部楼层
323232 发表于 2018-8-20 09:57
中断向量表重映射啊....

映射了的,还是不行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-8-21 01:55:24 | 显示全部楼层
多看几遍我们的IAP教程。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-21 09:08:51 | 显示全部楼层
正点原子 发表于 2018-8-21 01:55
多看几遍我们的IAP教程。

看了很多遍了,网上的各种方法也都试过了,无非就是地址和中断向量表偏移的问题,我都确认过了,可就是不行。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2018-8-22 02:07:18 | 显示全部楼层
午夜狼嚎 发表于 2018-8-21 09:08
看了很多遍了,网上的各种方法也都试过了,无非就是地址和中断向量表偏移的问题,我都确认过了,可就是不 ...

继续看,继续做。
不行就把我们例程,自己敲一遍,然后包你会。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-22 09:00:57 | 显示全部楼层
好吧
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-7-7
在线时间
24 小时
发表于 2018-8-23 21:02:09 | 显示全部楼层
  不要在main里面写这个SCB->VTOR = FLASH_BASE | 0x3000,直接找到VECT_TAB_OFFSET的宏定义,改为0x3000试试
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-24 09:04:16 | 显示全部楼层
会飞的鱼zhh 发表于 2018-8-23 21:02
不要在main里面写这个SCB->VTOR = FLASH_BASE | 0x3000,直接找到VECT_TAB_OFFSET的宏定义,改为0x3000试 ...

试过了,不行
回复

使用道具 举报

5

主题

29

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2018-5-8
在线时间
32 小时
发表于 2018-8-24 09:44:29 | 显示全部楼层
看看你的BootLoader程序串口配置的代码
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-8-24 10:35:44 | 显示全部楼层
十年好唱却难等 发表于 2018-8-24 09:44
看看你的BootLoader程序串口配置的代码

就是原子大哥的
void uart_init(u32 bound)
{
  //GPIO端口设置
  GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
         
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);        //使能USART1,GPIOA时钟
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
       
        //USART1_TX   GPIOA.9
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;
        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
       
       
        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;
        GPIO_Init(GPIOA,&GPIO_InitStructure);
                                             
  //Usart1 NVIC 配置
  NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority=3;
        NVIC_Init(&NVIC_InitStructure);
  
   //USART 初始化设置


        USART_InitStructure.USART_BaudRate=bound;
        USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;
        USART_InitStructure.USART_Parity=USART_Parity_No;
        USART_InitStructure.USART_StopBits=USART_StopBits_1;
        USART_InitStructure.USART_WordLength=USART_WordLength_8b;
       
        USART_Init(USART1,&USART_InitStructure);
        USART_Cmd(USART1,ENABLE);
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
        USART_ClearFlag(USART1,USART_FLAG_TC);

}
回复

使用道具 举报

11

主题

67

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2018-4-17
在线时间
152 小时
发表于 2018-8-29 10:11:36 | 显示全部楼层
我的也是这个问题,郁闷
回复

使用道具 举报

11

主题

67

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2018-4-17
在线时间
152 小时
发表于 2018-8-29 10:15:13 | 显示全部楼层
正点原子 发表于 2018-8-21 01:55
多看几遍我们的IAP教程。

原子哥的IAP好神奇,我没看到有什么特殊操作,但是跳到IAP了就是没问题,就是能中断,我的就是不行,气死我了
回复

使用道具 举报

11

主题

67

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2018-4-17
在线时间
152 小时
发表于 2018-8-29 10:59:15 | 显示全部楼层
会飞的鱼zhh 发表于 2018-8-23 21:02
不要在main里面写这个SCB->VTOR = FLASH_BASE | 0x3000,直接找到VECT_TAB_OFFSET的宏定义,改为0x3000试 ...

我试了这个可以,感谢
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-7-7
在线时间
24 小时
发表于 2018-8-30 19:49:47 | 显示全部楼层

这几天没上论坛,把你代码IAP和APP的代码上传上来看看
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2018-8-31
在线时间
26 小时
发表于 2018-8-31 14:13:58 | 显示全部楼层
遇到同样的问题,我用了原子哥的例程IAP来下我自己写的APP,跳转就死机。用例程的APP就可以
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-1 12:57:04 | 显示全部楼层
本帖最后由 午夜狼嚎 于 2018-9-1 12:58 编辑
会飞的鱼zhh 发表于 2018-8-30 19:49
这几天没上论坛,把你代码IAP和APP的代码上传上来看看

IAP-Bootloader V1.3.rar (2.58 MB, 下载次数: 74)
回复

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2013-6-30
在线时间
30 小时
发表于 2018-9-2 11:02:06 | 显示全部楼层
IAP方式时只能开可编程中断,像SYSTICK之类的不能开
回复

使用道具 举报

6

主题

48

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
204
金钱
204
注册时间
2013-6-30
在线时间
30 小时
发表于 2018-9-2 11:05:34 | 显示全部楼层
也可以开,但IAP里边得有和APP程序配合的代码才行
回复

使用道具 举报

0

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2017-7-7
在线时间
24 小时
发表于 2018-9-5 20:42:13 | 显示全部楼层
按照你描述的,APP是可以运行,但是进不了APP里面的串口中断。我看了你的APP程序,里面没有串口1中断啊,是串口2的中断服务函数。。。IAP和APP的偏移量,程序地址检测都没问题啊。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 10:19:44 | 显示全部楼层
会飞的鱼zhh 发表于 2018-9-5 20:42
按照你描述的,APP是可以运行,但是进不了APP里面的串口中断。我看了你的APP程序,里面没有串口1中断啊,是 ...

APP是后面改了的,为了排除IAP和APP的串口相互影响,所以将APP的串口设置成了串口2,IAP是串口1,用来升级程序。感谢你帮我看程序
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2018-9-6 10:38:38 | 显示全部楼层
void NVIC_DeInit(void)
{
        uint32_t index = 0;
   
        NVIC->ICER[0] = 0xFFFFFFFF;
        NVIC->ICER[1] = 0xFFFFFFFF;       
        NVIC->ICER[2] = 0x0000000F;

       
        NVIC->ICPR[0] = 0xFFFFFFFF;
        NVIC->ICPR[1] = 0xFFFFFFFF;
        NVIC->ICPR[2] = 0x0000000F;

        for(index = 0; index < 68; index++)
        {
                NVIC->IP[index] = 0x00000000;
        }
}
加上个这个函数,只针对F1,F4不一样的地方
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 11:18:20 | 显示全部楼层
szczyb1314 发表于 2018-9-6 10:38
void NVIC_DeInit(void)
{
        uint32_t index = 0;

加在APP还是IAP呢?
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2018-9-6 11:20:15 | 显示全部楼层
我的IAP就是原子哥的IAP,跳转的时候加了上面的程序,复位了RCC,GPIO,然后跳转,APP里面用了同样的usart1中断,timer3定时中断,rtc的中断,执行没有问题,原来也是跳转到APP后中断进不去,参考网友的程序改了这个后就正常了,我试验过,IAP跳转到APP,app跳转回IAP都没有问题。mini板测试的
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6666
金钱
6666
注册时间
2015-8-25
在线时间
1035 小时
发表于 2018-9-6 11:22:05 | 显示全部楼层
午夜狼嚎 发表于 2018-9-6 11:18
加在APP还是IAP呢?

void iap_load_app(u32 appxaddr)
{
        NVIC_DeInit();
        RCC_DeInit();
        __asm("CPSID   I");       
        GPIO_DeInit(GPIOA);GPIO_DeInit(GPIOB);GPIO_DeInit(GPIOC);
        GPIO_DeInit(GPIOD);
        GPIO_DeInit(GPIOE);GPIO_DeInit(GPIOF);GPIO_DeInit(GPIOG);
        if(((*(vu32*)appxaddr)&0x2FFE0000)==0x20000000)        //检查栈顶地址是否合法.
        {
                jump2app=(iapfun)*(vu32*)(appxaddr+4);                //用户代码区第二个字为程序开始地址(复位地址)               
                MSR_MSP(*(vu32*)appxaddr);                                        //初始化APP堆栈指针(用户代码区的第一个字用于存放栈顶地址)
                jump2app();                                                                        //跳转到APP.
        }
}
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 11:32:51 | 显示全部楼层
szczyb1314 发表于 2018-9-6 11:22
void iap_load_app(u32 appxaddr)
{
        NVIC_DeInit();

好的,谢谢,我试试
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 14:10:33 | 显示全部楼层
szczyb1314 发表于 2018-9-6 11:22
void iap_load_app(u32 appxaddr)
{
        NVIC_DeInit();

我试过了,还是不行
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 14:39:12 | 显示全部楼层
一起哈皮 发表于 2018-9-6 14:11
你工程没改VECT_TAB_OFFSET的值,就不要把SystemInit放进工程里,因为系统初始化函数会初始化中断向量表的 ...

我就在APP里设置了中断向量表的偏移SCB->VTOR = FLASH_BASE | 0x3000;  没有加入systeminit
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-9-6 14:53:48 | 显示全部楼层
你上面的工程,RCC_INIT里就有systeminit,去掉它,把串口2改回串口1应该就可以了
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-6 16:31:19 | 显示全部楼层
一起哈皮 发表于 2018-9-6 14:53
你上面的工程,RCC_INIT里就有systeminit,去掉它,把串口2改回串口1应该就可以了

谢谢你,但还是不行
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-9-6 16:53:27 | 显示全部楼层
午夜狼嚎 发表于 2018-9-6 16:31
谢谢你,但还是不行

我用板子试过了,是可以的,你把断点打在if那里调试,因为你串口接收写的有问题,不要先清标志再检测标志,学原子的方法
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-7 08:57:27 | 显示全部楼层
一起哈皮 发表于 2018-9-6 16:53
我用板子试过了,是可以的,你把断点打在if那里调试,因为你串口接收写的有问题,不要先清标志再检测标志 ...

可以把你改的程序传上来我看看吗?谢谢!
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-7 08:58:36 | 显示全部楼层
一起哈皮 发表于 2018-9-6 16:53
我用板子试过了,是可以的,你把断点打在if那里调试,因为你串口接收写的有问题,不要先清标志再检测标志 ...

还有一个问题就是不把串口2改回串口1可以吗?如果我就想在APP里面用串口2
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-9-10 09:44:23 | 显示全部楼层
午夜狼嚎 发表于 2018-9-7 08:58
还有一个问题就是不把串口2改回串口1可以吗?如果我就想在APP里面用串口2

我都说的很清楚了,这是因为SystemInit把你的中断向量表又跳回初始位置了(在SystemInit函数末尾几句),改好了随便你用什么串口、什么外设都行
工程给你看看吧,只注释两行就行的事

串口2.zip

301.54 KB, 下载次数: 84

回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-12 09:04:11 | 显示全部楼层
一起哈皮 发表于 2018-9-10 09:44
我都说的很清楚了,这是因为SystemInit把你的中断向量表又跳回初始位置了(在SystemInit函数末尾几句), ...

谢谢你!最近比较忙,刚看到消息。等我空了看一下
回复

使用道具 举报

0

主题

49

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-3-21
在线时间
45 小时
发表于 2018-9-12 09:42:20 | 显示全部楼层
关注,我也一直没弄好
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-13 18:50:48 | 显示全部楼层
一起哈皮 发表于 2018-9-10 09:44
我都说的很清楚了,这是因为SystemInit把你的中断向量表又跳回初始位置了(在SystemInit函数末尾几句), ...

我试过了,还是不行
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-9-14 09:44:02 | 显示全部楼层
本帖最后由 一起哈皮 于 2018-9-14 09:45 编辑
午夜狼嚎 发表于 2018-9-13 18:50
我试过了,还是不行

一样的c8t6板子,一样的APP都不行的话,那我也没辙了,你看看自己调试方法有没有问题吧,或者参考原子的例程写法重写程序,我直接上电后运行正常跳转后能进当前串口中断并能正确接收:
QQ截图20180914093320.png

回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-14 10:28:51 | 显示全部楼层
本帖最后由 午夜狼嚎 于 2018-9-14 10:36 编辑
一起哈皮 发表于 2018-9-14 09:44
一样的c8t6板子,一样的APP都不行的话,那我也没辙了,你看看自己调试方法有没有问题吧,或者参考原子的 ...

会不会和硬件有关,比如boot0和boot1的设置。还有,怎么进的APP调试
你是不是单独调试的APP程序?还是先把IAP程序写进单片机,再通过IAP导入APP?如果是后者怎么进APP调试?
回复

使用道具 举报

4

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1194
金钱
1194
注册时间
2017-8-31
在线时间
295 小时
发表于 2018-9-14 10:45:00 | 显示全部楼层
午夜狼嚎 发表于 2018-9-14 10:28
会不会和硬件有关,比如boot0和boot1的设置。还有,怎么进的APP调试
你是不是单独调试的APP程序?还是 ...

应该跟硬件没关,你上面说能发也能收,只是接收跳错位置而已;
下载完上面的boot和APP直接点APP仿真并打断点,用调试助手发送数据给串口1,程序就停断点那就表示没问题了;
回复

使用道具 举报

17

主题

194

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1049
金钱
1049
注册时间
2016-9-3
在线时间
158 小时
 楼主| 发表于 2018-9-14 11:17:25 | 显示全部楼层
一起哈皮 发表于 2018-9-14 10:45
应该跟硬件没关,你上面说能发也能收,只是接收跳错位置而已;
下载完上面的boot和APP直接点APP仿真并打 ...

没太整明白呢,我用的是KEIL,你的意思是下载好boot和APP后,我在KEIL里面点APP仿真?但此时如果点了仿真,那不就把之前的程序都覆盖了?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-25 06:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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