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

查看: 3829|回复: 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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版