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

楼主: zero99

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

   关闭 [复制链接]

4

主题

1946

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-12-19 10:30:26 | 显示全部楼层
1、原因:当USB核收到来自Host端的数据后会自动将OUT端点关闭,也就是在接收函数中在接收下一次数据时要再次使能这个OUT端点的原因。因此我们大体可以判断出在OUT数据传输的过程中,USB核会禁止端点->打开端点->禁止端点…如此不断循环中。因此卡顿现象是发送与接收处于不同优先等级导致资源冲突所致。
解决方案:可以将发送放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。另外,此问题是出现在Cube库的低版本中,当升级到最新版本后也可以解决。

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

3、基于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

主题

49

回帖

2

蝴蝶豆

金牌会员

最后登录
2018-1-9
发表于 2017-12-19 10:30:44 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
       卡顿现象是发送与接收处于不同优先等级导致资源冲突所致。可以通过将发送也放到与USB接收中断相同的中断等级中,利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级。另外,此问题是出现在Cube库的低版本中,当升级到最新版本后也可以解决。
问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?
      通常结合外部模式(外部中断模式 External Interrupt Mode 或外部事件模式 External EventMode)和__SEV()指令翻转 GPIO 口来测量低功耗模式下的唤醒时间测量。由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。

问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
       基于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的支持,可以使用图形化界面单步调试源代码。



回复 支持 反对

使用道具 举报

1

主题

1065

回帖

1

蝴蝶豆

金牌会员

最后登录
2020-11-9
发表于 2017-12-19 10:44:55 | 显示全部楼层
回复 支持 反对

使用道具 举报

74

主题

1368

回帖

194

蝴蝶豆

版主

最后登录
2020-5-12
发表于 2017-12-19 10:57:19 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
实战经验案例中的关键词:“如果只是单向通信,就一直都是正常的。 ”
根据这一特点可初步判断就是收发通道竞争造成,再根据原文中的检查步骤俄到以下的结果:

“由于此问题是发送与接收处于不同优先等级导致资源冲突所致,那么我们可以将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。”

实此问题是出现在Cube库的低版本中,最新本的CubeF4 V1.16.0,CubeF2 V1.6.0版本中此问题得到了解决;
解决方法可以对比两个版本的相关源代码

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

使用探索板,找到对应工程项目的目录(“ STM32Lxxxxxx-Discovery\Examples\PWR ”),
目录下的PWR_STANDBY 和PWR_STOP这项目工程,通过这两个低功耗模式做一个说明测量唤醒时间的方法。
通过实战经验的两个示例可以看出,通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。



问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
集成开发环境有SW4STM32和TrueSTUDIO
SW4STM32 是AC6公司的,相关Eclipxe插件和开发工下载工具地址:
http://www.openstm32.org
SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
安装后,可插件升级实现开发工具库的升级,插件的下载地址:
http://www.ac6-tools.com/Eclipse ... nch.update-site-v2/
SW4STM32 只支持ST各系列的MCU和、官方、自定义开发板,支持链接调试工具(“如:ST-LINK等内容)需要通过OpenOCD的配置文件进行配置(默认可用ST-LINK)作为链接工具。


TrueStudio是 Atollic公司,rueSTUDIO Lite完全免费,没有大小限制;TrueSTUDIO Pro需要授权,但是你可以获得更多高级功能,包括代码分析和调试。
相关下载:http://atollic.com/resources/download/
最新集成版本8.1

二者均可采用OpenOCD实现对 ST-LINK等下载调试工具的支持,
TrueStudio除了支持ST产品外,还支持其他厂家的MCU,如NXP等,还支持J-LINK、PEMicro等调试工具。

回复 支持 反对

使用道具 举报

91

主题

4603

回帖

4

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-12-19 10:59:57 | 显示全部楼层
1-------------------由于此问题是发送与接收处于不同优先等级导致资源冲突所致,那么我们可以将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。
2-----------------通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。

3-----------------集成开发环境有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的支持,可以使用图形化界面单步调试源代码



补充内容 (2017-12-19 11:10):
醒的方法我们选择WKUP唤醒引脚的上升沿;进入低功耗的方法有WFI(wait for interrupt)和WFE(wait for event)。直接打开运行“…STM32Cube_FW_L0_V1.9.0\Projects\STM32L053C8-Discovery\Examples\PWR” 目录下的PWR_STANDBY项目工程,并且阅读工程目录下的Readme.txt,了解该项目代码是如何进入低功耗模式,以及进入低功耗的寄存器及时钟方面的配置。详细可见https://www.stmcu.org.cn/module/ ... E%E5%8A%9F%E8%80%97。。。。。。通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。

补充内容 (2017-12-19 11:11):
上面的补充是第2个问题的,唤醒的方法。。。。
回复 支持 反对

使用道具 举报

1

主题

589

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-11
发表于 2017-12-19 11:17:20 | 显示全部楼层
1.发送与接收处于不同优先等级导致资源冲突所致。
  将发送也放到与USB接收中断相同的中断等级中去。
2.通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
  由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式
  
3.SW4STM32和TrueSTUDIO
SW4STM32完全免费且没有大小限制。可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快
速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32支持导STM32CubeMX生成的工程文件,无须改动,直接编译通过。SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码;
TTrueSTUDIO Lite完全免费,没有大小限制;TrueSTUDIO Pro需要授权,但可以进行代码分析和调试。
无论是在免费没有大小限制的版本中或者是需要授权的版本中,都可以使用它图形化的界面来配置源代
码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行
自动补全以及查看参数。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。

TrueSTUDIO内建对ST-Link的支持,可以使用图形化界面单步调试源代码
回复 支持 反对

使用道具 举报

8

主题

384

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-4-9
发表于 2017-12-19 11:18:03 | 显示全部楼层
1.卡顿现象问题是发送与接收处于不同优先等级导致资源冲突所致。解决办法:可以将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。
2.通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。
3.基于Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,在用户友好程度,开发效率上已接近IAR/KEIL
回复 支持 反对

使用道具 举报

0

主题

28

回帖

0

蝴蝶豆

中级会员

最后登录
2018-9-30
发表于 2017-12-19 11:22:24 | 显示全部楼层
问题1:出现的原因:是发送与接收处于不同优先等级导致资源冲突所致。解决方法:可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次。

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

问题3:SW4STM32和TrueSTUDIO开发平台。具有跨平台的优势,完全免费不受代码限制。
回复 支持 反对

使用道具 举报

2

主题

445

回帖

11

蝴蝶豆

金牌会员

最后登录
2019-3-21
发表于 2017-12-19 11:35:48 | 显示全部楼层
1.此问题是出现在Cube库的低版本中,例如CubeF4 V1.5.0和CubeF2 V1.3.0中都存在。原因是USB发送和接受用到同一个互斥锁,而接收放在中断内,发送放在中断外,优先级别是不一样的,优先级不一样就有可能导致资源冲突,所以造成卡顿现象。
解决方法:将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。在最新本的CubeF4 V1.16.0,CubeF2 V1.6.0版本中此问题得到了解决。

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

3.SW4STM32和TrueSTUDIO。在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL,而且免费易用,无代码大小限制,还可以跨平台使用。
回复 支持 反对

使用道具 举报

1

主题

22

回帖

0

蝴蝶豆

中级会员

最后登录
2019-8-2
发表于 2017-12-19 12:21:20 | 显示全部楼层
1.原因:发送与接收处于不同优先等级导致资源冲突,解决方案:将发送也放到与USB接收中断相同的中断等级中去
2.
PWR_STANDBY模式
[唤醒引脚上波形的上升沿用于唤醒低功耗模式,引脚边沿的变化即可理解为唤醒后开始执行第一条语句的时间],也就是两个跳动边沿的时间间隔。
PWR_STOP模式
PA0的下降沿用于唤醒STOP模式。
for testing部分的这一条__SEV()指令;用于唤醒后第一条执行指令也就是在一个另外的引脚上输出一个脉冲。
测量下降沿和脉冲之间的时间。
3.SW4STM32和TrueSTUDIO
可以跨平台开发
SW4STM32
可以跨平台开发,完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
TrueSTUDIO
可以跨平台开发,免费下载,无使用代码量或使用时间限制,可用低成本的stlink调试stm32
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版