OpenEdv-开源电子网

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

IAP跳转APP后ADC异常,优化等级问题求解

[复制链接]

17

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-4-28
在线时间
66 小时
发表于 2021-6-8 17:38:23 | 显示全部楼层 |阅读模式
5金钱
如题,移植原子IAP后关开中断了,地址偏移了,能跳APP并且可以响应中断,但是ADC突然不行了(单APP试过ADC没问题)。然后app优化等级改成1后ADC能用了,请问为啥。默认的都是0不优化

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

使用道具 举报

1

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
1023
注册时间
2019-9-21
在线时间
269 小时
发表于 2021-6-8 18:03:45 | 显示全部楼层
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-8 23:37:01 | 显示全部楼层
你的IAP干了什么事情?在APP里面,初始化ADC之前,对相关外设进行一次复位,比如对ADC/DMA、等等相关外设进行一次复位,再开始初始化ADC等
回复

使用道具 举报

17

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-4-28
在线时间
66 小时
 楼主| 发表于 2021-6-9 11:26:58 | 显示全部楼层
正点原子 发表于 2021-6-8 23:37
你的IAP干了什么事情?在APP里面,初始化ADC之前,对相关外设进行一次复位,比如对ADC/DMA、等等相关外设进 ...

外设初始化前都复位了。IAP就是串口接收bin然后关中断啥的然后跳转app,app啥都正常就是ADC不工作。优化等级改1后就行了,还有一个问题,adc通过dma中断处理完后flag=1,我在主函数用while(flag==0);等待处理完发现adc又不行了,标志位能置位一次,后面就不行了为啥。如果用if(flag==1)就行了
回复

使用道具 举报

17

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-4-28
在线时间
66 小时
 楼主| 发表于 2021-6-9 14:05:45 | 显示全部楼层
0孙悟空0 发表于 2021-6-9 11:26
外设初始化前都复位了。IAP就是串口接收bin然后关中断啥的然后跳转app,app啥都正常就是ADC不工作。优化 ...

开优化等级使用while(flag==0);得用volatile修饰,if就不需要了。但还是不知道为啥只有开优化iap跳app的adc才行,否则不行
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-9 23:30:07 | 显示全部楼层
0孙悟空0 发表于 2021-6-9 14:05
开优化等级使用while(flag==0);得用volatile修饰,if就不需要了。但还是不知道为啥只有开优化iap跳app ...

搞些printf辅助分析一下吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

70

主题

6761

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
13097
金钱
13097
注册时间
2012-11-26
在线时间
3811 小时
发表于 2021-6-10 08:21:28 | 显示全部楼层
不清楚  帮顶   我用STM32L431  优化等级开到O3都没异常
学无止境
回复

使用道具 举报

4

主题

83

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2019-11-12
在线时间
77 小时
发表于 2021-6-10 08:28:53 | 显示全部楼层
0孙悟空0 发表于 2021-6-9 14:05
开优化等级使用while(flag==0);得用volatile修饰,if就不需要了。但还是不知道为啥只有开优化iap跳app ...

adc配置前deinit一下结构体
回复

使用道具 举报

17

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-4-28
在线时间
66 小时
 楼主| 发表于 2021-6-10 16:37:26 | 显示全部楼层
nstopb 发表于 2021-6-10 08:28
adc配置前deinit一下结构体

整了没用
回复

使用道具 举报

17

主题

77

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
263
金钱
263
注册时间
2019-4-28
在线时间
66 小时
 楼主| 发表于 2021-6-10 17:17:30 | 显示全部楼层
正点原子 发表于 2021-6-9 23:30
搞些printf辅助分析一下吧

我该printf啥,我优化0通过print得出定时器可用【定时器触发ADC,dma搬运】,printf adc值一直0得知adc不工作,单app是能printf出adc值的,就是iap跳转后的优化0adc不工作
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-10 23:43:50 | 显示全部楼层
0孙悟空0 发表于 2021-6-10 17:17
我该printf啥,我优化0通过print得出定时器可用【定时器触发ADC,dma搬运】,printf adc值一直0得知adc不 ...

比如把adc的部分寄存器值printf出来,在怀疑有问题的地方printf关键参数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2021-6-10 23:43:58 | 显示全部楼层
辅助分析就是这么干的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-22 18:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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