你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3849|回复: 85

[活动] (已公布)12.19 狂欢节问答

   关闭 [复制链接]

1182

主题

3785

回帖

1

蝴蝶豆

论坛元老

最后登录
2020-3-17
发表于 2017-12-19 09:17:56 | 显示全部楼层 |阅读模式
答案已公布,今天获得NUCLEO的幸运者为:@Angel_YY(从当天正确回答的网友中选取)



大家在学习&使用STM32及相关产品时候,肯定会遇到不少问题。ST官方FAE为此特地开设了【实战经验】专栏,都是根据收集到的技术反馈,分享的技术干货,希望大家好好加以利用。今天的问题将围绕2017年下半年更新的【实战经验】展开(大家也可以如图找到入口,当然也可以选择收藏啦): 211.png

问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
答:发送与接收处于不同优先等级导致资源冲突所致,可以将发送也放到与USB接收中断相同的中断等级中去。开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。https://www.stmcu.org.cn/module/forum/thread-613504-1-1.html

问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?

答:通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。https://www.stmcu.org.cn/module/forum/thread-612528-1-1.html

问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势

答:有SW4STM32和TrueSTUDIO。在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL,而且免费易用,无代码大小限制,还可以跨平台使用。https://www.stmcu.org.cn/module/forum/thread-613837-1-1.html

(本周的问题,大家回帖说明答案即可,尽量不要分多个楼层回复)









点评

建议改成抢答  发表于 2017-12-19 10:59
我的***与热情暴露无遗@^@  发表于 2017-12-19 10:09
不隐藏?管理这是要人人参与的节奏啊。  发表于 2017-12-19 10:04
回复不隐藏??  发表于 2017-12-19 09:52
<
回复

使用道具 举报

31

主题

1696

回帖

177

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-12-19 09:40:23 | 显示全部楼层
1.发送与接收处于不同优先等级导致资源冲突所致,可以将发送也放到与USB接收中断相同的中断等级中去。开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。
2.通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
3.基于Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL。
回复 支持 反对

使用道具 举报

14

主题

505

回帖

9

蝴蝶豆

金牌会员

最后登录
2020-11-26
发表于 2017-12-19 09:45:41 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
           发送与接收处于不同优先等级导致资源冲突所致,可以将发送也放到与USB接收中断相同的中断等级中去。开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。

问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?
          通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。

问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
          基于Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL

回复 支持 反对

使用道具 举报

9

主题

735

回帖

287

蝴蝶豆

论坛元老

最后登录
2020-11-20
发表于 2017-12-19 09:51:44 | 显示全部楼层
1.问题是发送与接收处于不同优先等级导致资源冲突所致,在发送数据出去后获得互斥锁,此时来了接收中断,把端口关闭了,因为没能获得互斥锁,也没能打开端口。解决方式,把发送放到与接收中断同样的优先级中去。

2.结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。然后直接测量触发的与输出的时间段。

3.SW4STM32和TrueSTUDIO  其优势就是免费。界面接近IAR与keil,同时支持STM32CUBU生成工程。
回复 支持 反对

使用道具 举报

23

主题

200

回帖

11

蝴蝶豆

金牌会员

最后登录
2020-12-8
发表于 2017-12-19 09:56:46 | 显示全部楼层
1
全局变量Lock_Flag值进行判断时,程序锁死在while(1)中,即互锁所致。
将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。

2
通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式
3
SW4STM32
可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。
SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。
通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。

TrueSTUDIO
TrueSTUDIO Lite完全免费,没有大小限制
可以使用它图形化的界面来配置源代码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。
内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
回复 支持 反对

使用道具 举报

2

主题

280

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-28
发表于 2017-12-19 09:58:00 | 显示全部楼层
1、此问题是发送与接收处于不同优先等级导致资源冲突所致,解决:USB发送中断与USB接收中断放在相同的中断等级中去。
2、通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
3、SW4STM32和TrueSTUDIO  在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL,而且具有跨平台的优势。
回复 支持 反对

使用道具 举报

6

主题

296

回帖

2

蝴蝶豆

高级会员

最后登录
2019-11-13
发表于 2017-12-19 09:58:57 | 显示全部楼层
回复 支持 反对

使用道具 举报

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-12-19 10:05:25 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
在接收到USB数据包的个数后(PKTCNT),USB核将内部自动将这个OUT端点的NAK为置1,以阻止接收更多数据包;互斥锁所致
解决方案
知道了问题原因所在,接下来解决问题就相对来说比较容易的了。由于此问题是发送与接收处于不同优先等级导致资源冲突所致,那么我们可以将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。
此外,其实此问题是出现在Cube库的低版本中,例如CubeF4 V1.5.0和CubeF2 V1.3.0中都存在,但是在最新本的CubeF4 V1.16.0,CubeF2 V1.6.0版本中此问题得到了解决;
问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?

通常结合外部模式(外部中断模式 External Interrupt Mode 或外部事件模式 External EventMode)和__SEV()指令翻转 GPIO 口来测量低功耗模式下的唤醒时间测量。由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。  


问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
境 SW4STM32 和TrueSTUDIO,
SW4STM32 是 AC6 公司推出的基于 Eclipse 图形界面的完整集成开发环境。SW4STM32 使用基于Gcc 的完整编译调试工具链, 完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及 Gcc 编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32 支持导入 STM32CubeMX 生成的工程文件,无须改动,直接编译通过。SW4STM32 通过OpenOCD 内建对 ST-Link 的支持,可以使用图形化界面单步调试源代码。
TrueSTUDIO 是 Atollic 公司推出的基于 Eclipse 图形界面的完整集成开发环境。如同 SW4STM32, 它使用基于 Gcc 的完整编译调试工具链。TrueSTUDIO 提供两个版本,TrueSTUDIO Lite 完全免费,没有大小限制;TrueSTUDIO Pro 需要授权,但是你可以获得更多高级功能,包括代码分析和调试。无论是在免费没有大小限制的版本中或者是需要授权的版本中,你可以使用它图形化的界面来配置源代码的路径以及 Gcc 编译选项, 利用 Eclipse 图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。SW4STM32 支持导入 STM32CubeMX 生成的工程文件,无须改动,直接编译通过。TrueSTUDIO 内建对 ST-Link 的支持,可以使用图形化界面单步调试源代码。
回复 支持 反对

使用道具 举报

16

主题

3009

回帖

2

蝴蝶豆

论坛元老

最后登录
2020-11-30
发表于 2017-12-19 10:09:37 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
       卡顿现象是发送与接收处于不同优先等级导致资源冲突所致。可以通过将发送也放到与USB接收中断相同的中断等级中,利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级。另外,此问题是出现在Cube库的低版本中,当升级到最新版本后也可以解决。

问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?
       通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。

问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
       基于Gcc和Eclipse的集成开发环境有SW4STM32和TrueSTUDIO。
       SW4STM322使用基于Gcc的完整编译调试工具链, 完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
       TrueSTUDIO是Atollic公司推出的基于Eclipse图形界面的完整集成开发环境。如同SW4STM32, 它使用基于Gcc的完整编译调试工具链。TrueSTUDIO提供两个版本,TrueSTUDIO Lite完全免费,没有大小限制;TrueSTUDIO Pro需要授权,但是你可以获得更多高级功能,包括代码分析和调试。无论是在免费没有大小限制的版本中或者是需要授权的版本中,你可以使用它图形化的界面来配置源代码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。TrueSTUDIO内建对ST-Link的支持,可以使用图形化界面单步调试源代码。

回复 支持 反对

使用道具 举报

0

主题

6

回帖

0

蝴蝶豆

初级会员

最后登录
2017-12-22
发表于 2017-12-19 10:25:14 | 显示全部楼层
1      卡顿现象是发送与接收处于不同优先等级导致资源冲突所致。可以通过将发送也放到与USB接收中断相同的中断等级中,利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级。另外,此问题是出现在Cube库的低版本中,当升级到最新版本后也可以解决。


2      通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。

3
       基于Gcc和Eclipse的集成开发环境有SW4STM32和TrueSTUDIO。
       SW4STM32使用基于Gcc的完整编译调试工具链, 完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
       TrueSTUDIO是Atollic公司推出的基于Eclipse图形界面的完整集成开发环境。如同SW4STM32, 它使用基于Gcc的完整编译调试工具链。TrueSTUDIO提供两个版本,TrueSTUDIO Lite完全免费,没有大小限制;TrueSTUDIO Pro需要授权,但是你可以获得更多高级功能,包括代码分析和调试。无论是在免费没有大小限制的版本中或者是需要授权的版本中,你可以使用它图形化的界面来配置源代码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。TrueSTUDIO内建对ST-Link的支持,可以使用图形化界面单步调试源代码
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版