查看: 4593|回复: 6

[分享] KL25官方第10版sample code中BME代码补丁

[复制链接]

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2014-1-24 16:21:38 | 显示全部楼层 |阅读模式
大家如果在调试KL25第10版sample code代码的BME工程时,发现打印出的结果显示BME代码确没有普通C代码跑的快,请不要惊慌,本文教您如何解决!

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

复制代码


先修改为宏定义的方式:
 
       
  • #define  BME_AND_W(addr, wdata)    \
            
  •           *(volatile uint32_t*)((uint32_t)addr | BME_AND_MASK) = wdata;

复制代码


最终的打印结果显示为:
Running the LQRUG_bme_ex1 project.
systick start value: 0xFFFFF2
systick end value: 0xFFFFEE
systick current value read overhead: 0x4
systick start value: 0xFFFFD6
systick end value: 0xFFFFC2
actual execution cycle for logic operation with normal C code: 0x10
systick start value: 0xFFFFD7
systick end value: 0xFFFFC9
actual execution cycle for logic operation with BME macros: 0xA
systick start value: 0xFFFFE7
systick end value: 0xFFFFD3
actual execution cycle for BFI operation with normal C: 0x10
systick start value: 0xFFFFEE
systick end value: 0xFFFFE0
actual execution cycle for BFI operation with BME macro: 0xA
load_bit is 1
systick start value: 0xFFFFDF
systick end value: 0xFFFFCB
actual execution cycle for LAC1 operation with normal C: 0x10
load bit is 1
systick start value: 0xFFFFE4
systick end value: 0xFFFFD6
actual execution cycle for LAC1 operation with BME macro: 0xA
load_bit is 0
systick start value: 0xFFFFEA
systick end value: 0xFFFFD7
actual execution cycle for LAS1 operation with normal C: 0xF
load bit is 0
systick start value: 0xFFFFE3
systick end value: 0xFFFFD4
actual execution cycle for LAS1 operation with bme macro: 0xB
extracted data is 2
systick start value: 0xFFFFE9
systick end value: 0xFFFFD8
actual execution cycle for UBFX operation with normal C: 0xD
extracted data is 2
systick start value: 0xFFFFEF
systick end value: 0xFFFFE2
actual execution cycle for UBFX operation with bme macro: 0x9
 
结果体现了使用BME模块的优势。
附件为修改后的BME.h,需要的网友可以下载下来将代码包中的头文件直接替换即可。
 
 

BME.rar

1.44 KB, 下载次数: 35, 下载积分: 威望 1

回复

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
 楼主| 发表于 2014-1-26 15:28:08 | 显示全部楼层

RE:KL25官方第10版sample code中BME代码补丁

如果大家在学习这部分的过程中遇到问题,可以直接跟贴!
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

4

帖子

0

新手上路

Rank: 1

积分
1
最后登录
1970-1-1
发表于 2014-3-1 12:18:35 | 显示全部楼层

回复:KL25官方第10版sample code中BME代码补丁

谢谢分享!!!
回复 支持 反对

使用道具 举报

该用户从未签到

4

主题

26

帖子

0

注册会员

Rank: 2

积分
59
最后登录
1970-1-1
发表于 2014-5-16 22:11:09 | 显示全部楼层

回复:KL25官方第10版sample code中BME代码补丁

haohaohao
回复 支持 反对

使用道具 举报

该用户从未签到

13

主题

62

帖子

0

注册会员

Rank: 2

积分
161
最后登录
1970-1-1
发表于 2014-6-5 11:55:16 | 显示全部楼层

回复:KL25官方第10版sample code中BME代码补丁

  
回复 支持 反对

使用道具 举报

该用户从未签到

0

主题

10

帖子

0

新手上路

Rank: 1

积分
35
最后登录
1970-1-1
发表于 2014-6-21 20:00:52 | 显示全部楼层

RE:KL25官方第10版sample code中BME代码补丁


NNNNNNN
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2016-11-24 10:19
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    50

    主题

    1028

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    2870
    最后登录
    1970-1-1
    发表于 2015-5-3 20:13:55 | 显示全部楼层
    这个就有点不明白了。原来的函数也已经强制内联了,理论上来讲已经和宏定义没区别了啊,怎么回事?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-21 11:49 , Processed in 0.090852 second(s), 25 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表