[Kinetis] 【经验分享】KL25官方第10版sample code中BME代码补丁

[复制链接]
 楼主| FSL_TICS_ZJJ 发表于 2014-1-24 16:19 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-10-21 14:41 编辑

大家如果在调试KL25第10版sample code代码的BME工程时,发现打印出的结果显示BME代码确没有普通C代码跑的快,请不要惊慌,本文教您如何解决!

由于第10版SC中BME.h 头文件写的比较冗余,不利于体现BME的优势,先将头文件做如下改写:
这里以BME_AND_W 函数为例。
原描写方式为:
  1. _BME_INLINE void BME_AND_W (volatile uint32_t *addr, register uint32_t wdata)

  2. {

  3. *(volatile uint32_t*)((uint32_t)addr | BME_AND_MASK) = wdata;

  4. }

现在修改为宏定义的方式:
  1. #define BME_AND_W(addr, wdata) \

  2. *(volatile uint32_t*)((uint32_t)addr | BME_AND_MASK) = wdata;
最终的打印结果显示为:
  1. Running the LQRUG_bme_ex1 project.



  2. systick start value: 0xFFFFF2



  3. systick end value: 0xFFFFEE



  4. systick current value read overhead: 0x4



  5. systick start value: 0xFFFFD6



  6. systick end value: 0xFFFFC2



  7. actual execution cycle for logic operation with normal C code: 0x10



  8. systick start value: 0xFFFFD7



  9. systick end value: 0xFFFFC9



  10. actual execution cycle for logic operation with BME macros: 0xA



  11. systick start value: 0xFFFFE7



  12. systick end value: 0xFFFFD3



  13. actual execution cycle for BFI operation with normal C: 0x10



  14. systick start value: 0xFFFFEE



  15. systick end value: 0xFFFFE0



  16. actual execution cycle for BFI operation with BME macro: 0xA



  17. load_bit is 1



  18. systick start value: 0xFFFFDF



  19. systick end value: 0xFFFFCB



  20. actual execution cycle for LAC1 operation with normal C: 0x10



  21. load bit is 1



  22. systick start value: 0xFFFFE4



  23. systick end value: 0xFFFFD6



  24. actual execution cycle for LAC1 operation with BME macro: 0xA



  25. load_bit is 0



  26. systick start value: 0xFFFFEA



  27. systick end value: 0xFFFFD7



  28. actual execution cycle for LAS1 operation with normal C: 0xF



  29. load bit is 0



  30. systick start value: 0xFFFFE3



  31. systick end value: 0xFFFFD4



  32. actual execution cycle for LAS1 operation with bme macro: 0xB



  33. extracted data is 2



  34. systick start value: 0xFFFFE9



  35. systick end value: 0xFFFFD8



  36. actual execution cycle for UBFX operation with normal C: 0xD



  37. extracted data is 2



  38. systick start value: 0xFFFFEF



  39. systick end value: 0xFFFFE2



  40. actual execution cycle for UBFX operation with bme macro: 0x9

结果体现了使用BME模块的优势。
附件为修改后的BME.h,需要的网友可以下载下来将代码包中的头文件直接替换即可。
BME.rar (1.44 KB, 下载次数: 8)



FSL_TICS_Jeremy 发表于 2014-1-24 16:59 | 显示全部楼层
网友们可以对照BME例程文档一起看哦!!
longdelu 发表于 2016-9-27 17:38 | 显示全部楼层
帮助很大,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

165

主题

5069

帖子

88

粉丝
快速回复 在线客服 返回列表 返回顶部