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

(已公布)12.19 狂欢节问答    关闭

[复制链接]
zero99 提问时间:2017-12-19 09:17 /
阅读主题, 点击返回1楼
收藏 1 评论85 发布时间:2017-12-19 09:17
85个回答
dzwwzd6699 回答时间: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的支持,可以使用图形化界面单步调试源代码
提笔画夕游 回答时间: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
我是小学生 回答时间:2017-12-19 11:22:24
问题1:出现的原因:是发送与接收处于不同优先等级导致资源冲突所致。解决方法:可以利用USB的EOPF中断,在开启EOPF中断后,在此中断内发送数据,这样发送与接收中断就处于相同等级了,EOPF每1ms触发一次。

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

问题3:SW4STM32和TrueSTUDIO开发平台。具有跨平台的优势,完全免费不受代码限制。
风之山谷 回答时间: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,而且免费易用,无代码大小限制,还可以跨平台使用。
predator-205795 回答时间: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
小小超 回答时间: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图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数
七哥 回答时间: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全系列开发但不受代码大小限制,而且具有跨平台的优势
wenyangzeng 回答时间: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图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。
栋栋 回答时间: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图形化的界面快速方便在源代码中跳转浏览,编写代码时进行自动补全以及查看参数。

the_newbie 回答时间: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
hjf2002 回答时间: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的支持,可以使用图形化界面单步调试源代码
nkjiangjian 回答时间: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
STM32-366775 回答时间: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的支持,可以使用图形化界面单步调试源代码。
qrsgcslqg 回答时间:2017-12-19 13:15:06
1.问题是发送与接收处于不同优先等级导致资源冲突所致
  解决方法:将发送也放到与USB接收中断相同的中断等级中去
2.结合外部模式(外部中断模式External Interrupt Mode或外部事件模式External Event Mode)和__SEV()指令翻转GPIO口来测量低功耗模式下的唤醒时间测量
3. Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO,在用户友好程度,开发效率上已经接近需要授权费用的IAR/KEIL
zhoupxa 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版