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

楼主: zero99

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

   关闭 [复制链接]

27

主题

1709

回帖

42

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-12-19 12:41:43 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
发送与接收处于不同优先等级导致资源冲突所致。可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。

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

问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
SW4STM32  完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。
TrueSTUDIO 完全免费,没有大小限制。图形化的界面来配置源代码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数
回复 支持 反对

使用道具 举报

48

主题

3559

回帖

429

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-12-19 12:42:06 | 显示全部楼层
1、原因:发送与接收处于不同优先等级导致资源。解决办法:我们可以将发送也放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。或者开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好

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

3、优势就是免费,可定制增减各种插件。




补充内容 (2017-12-19 12:47):
3、SW4STM32和TrueSTUDIO。免费且容易使用,接近IAR/KEIL的用户体验,能够进行STM32全系列开发但不受代码大小限制,而且具有跨平台的优势
回复 支持 反对

使用道具 举报

68

主题

3266

回帖

82

蝴蝶豆

社区小助手

最后登录
2020-12-9
发表于 2017-12-19 12:47:01 | 显示全部楼层
1、在接收到USB数据包的个数后(PKTCNT),USB核将内部自动将Data OUT对应的端点的NAK为置1,以阻止接收更多数据包; 在运行到__HAL_LOCK(hpcd)时;恰好有一个接收中断,由于USB中断具有优先级,跳转到接收中断内执行;此时获取互斥锁失败导致返回,接收函数在OUT端点没有再次打开就已经提前结束。
   因为是发送与接收处于不同优先等级导致资源冲突所致,所以可以将发送也放到与USB接收中断相同的中断等级中例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级,问题得以解决。
另外CubeF4 V1.16.0,CubeF2 V1.6.0版本中此问题得到了解决。

2、唤醒脚边沿的变化即为唤醒后开始执行第一条语句的时间;
    唤醒引脚上波形的上升沿用于唤醒低功耗模式,引脚边沿的变化即为唤醒后开始执行第一条语句的时间,两个跳动边沿的时间间隔即为唤醒时间。

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

使用道具 举报

0

主题

34

回帖

0

蝴蝶豆

高级会员

最后登录
2018-11-14
发表于 2017-12-19 12:47:20 | 显示全部楼层
1  原因 发送与接收处于不同优先等级导致资源冲突
   解决方法  利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次,速度完全可以。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。

2 ,通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量。
3 SW4STM32和TrueSTUDIO
跨平台  进行stm32全系列开发,且不受代码大小限制
SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。TrueSTUDIO内建对ST-Link的支持,可以使用图形化界面单步调试源代码。
TrueSTUDIO可以使用它图形化的界面来配置源代码的路径以及Gcc编译选项, 利用Eclipse图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。

回复 支持 反对

使用道具 举报

13

主题

98

回帖

9

蝴蝶豆

高级会员

最后登录
2019-4-13
发表于 2017-12-19 12:51:51 | 显示全部楼层
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.唤醒的方法我们选择WKUP唤醒引脚的上升沿
3.Eclipse IDE for C/C++ Developers,Eclipse插件   应为是免费的所以很多小型或刚起步的公司用的很多,还有就是资料比较多。

点评

第三题不对  发表于 2017-12-20 16:04
回复 支持 反对

使用道具 举报

1

主题

1461

回帖

0

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2017-12-19 13:12:39 | 显示全部楼层
1、USB传输数据时出现卡顿现象原因是优先级不一样就有可能导致资源冲突。    由于此问题是发送与接收处于不同优先等级导致资源冲突所致,那么我们可以将发送也放到与USB接收中断相同的中断等级中去。当然开启一个相同优先级的定时器来做发送数据也是可以,只不过定时器间隔得控制好。此外,此问题虽然后来发现是版本太旧所致。
2、唤醒时间的测量,可以读取时间段= [唤醒引脚上波形的上升沿用于唤醒低功耗模式,引脚边沿的变化即可理解为唤醒后开始执行第一条语句的时间],也就是两个跳动边沿的时间间隔。通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__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的支持,可以使用图形化界面单步调试源代码
回复 支持 反对

使用道具 举报

0

主题

37

回帖

3

蝴蝶豆

中级会员

最后登录
2018-12-24
发表于 2017-12-19 13:13:36 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?
原因:发送函数优先等级低于接收函数优先等级,导致在发送函数获取互斥锁后被优先级更高的接收函数抢占,从而导致接收函数中的获取互斥锁失败导致返回,接收函数在OUT端点没有再次打开就已经提前结束,导致接收循环无以为继。
解决办法:将USB发送函数置为USB接收中断相同的中断等级,避免被互相打断
问题2:案例中,常用的测量STM32L低功耗模式下的唤醒时间方法是什么?
通常结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)来唤醒和__SEV()指令翻转GPIO口,通过电平时间差来测量低功耗模式下的唤醒时间。由于外部事件模式不需要额外处理中断时间的特点,所以利用它,我们能够得到更精确的唤醒时间的测量,更适合用于唤醒后执行下一条命令的低功耗模式。
问题3:案例中提到,基于Gcc和Eclipse的集成开发环境有哪两种?并简要说明其优势
Keil和IAR;
Keil的优势是使用的范围更广、支持的内核广、功能更齐全、可以自动配置启动代码、集成Flash烧写模块、强大的Simulation设备模拟、性能分析等功能。
IAR的优势是其高度优化的编译器、编译速度快、生成的代码尺寸较小、比较简洁。

点评

第三题不对  发表于 2017-12-20 16:05
回复 支持 反对

使用道具 举报

3

主题

76

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-2
发表于 2017-12-19 13:14:56 | 显示全部楼层

1.问题是发送与接收处于不同优先等级导致资源冲突所致,解决方法:可以将发送也放到与USB接收中断相同的中断等级中去
2.结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量
3.基于Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,优势:在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL。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

主题

562

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-12-3
发表于 2017-12-19 13:15:06 | 显示全部楼层
1.问题是发送与接收处于不同优先等级导致资源冲突所致
  解决方法:将发送也放到与USB接收中断相同的中断等级中去
2.结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量
3. Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL
回复 支持 反对

使用道具 举报

5

主题

1584

回帖

11

蝴蝶豆

论坛元老

最后登录
2020-12-8
发表于 2017-12-19 13:20:47 | 显示全部楼层
问题1:案例中USB传输数据时,为什么会出现卡顿现象?以及如何解决?

由于USB发送与接收处于不同优先等级导致资源冲突所致。
解决方法:将发送放到与USB接收中断相同的中断等级中去,例如可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了。当然开启一个相同优先级的定时器来发送数据也可以,只不过定时器间隔得控制好。

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

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

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

基于Gcc和Eclipse的集成开发环境有SW4STM32和TrueSTUDIO。

SW4STM32是AC6公司推出的基于Eclipse图形界面的完整集成开发环境。SW4STM32使用基于Gcc的完整编译调试工具链, 完全免费且没有大小限制。你可以利用它图形化的界面来配置源代码的路径以及Gcc编译选项,快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数等。SW4STM32支持导入STM32CubeMX生成的工程文件,无须改动,直接编译通过。SW4STM32通过OpenOCD内建对ST-Link的支持,可以使用图形化界面单步调试源代码。SW4STM32支持下列平台:1.Windows;2.Linux;3.Mac OS。

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

回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版