打印
[XMC™]

内置MATH协处理器的使用例程方法,缩短代码执行时间分享

[复制链接]
172|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、除法协处理器使用方式
void MATH_Init()
{
    SCU_GENERAL->PASSWD = 0xC0U;
    SCU_CLK->CGATCLR0 |= 0x100;     //MATH
    SCU_GENERAL->PASSWD = 0xC3U;
   //MATH->DIVCON |= 0x02;           // Signed division is selected
   MATH->DIVCON |= 0x06;             // Unsigned division is selected
}

uint32_t MDU_Divider(uint32_t Dividend,uint32_t Divisor)
{
    MATH->DVD=Dividend;
    MATH->DVS=Divisor;
    MATH->DIVCON |=0x05;   //start
    while(MATH->DIVST & 0x01){}
    return((uint32_t)MATH->QUOT);
}

1、在main函数中调用 MATH_Init();
2、调用uint32_t MDU_Divider(uint32_t Dividend,uint32_t Divisor)进行除法运算
    如:temp = data1 / data2;
          temp = MDU_Divider(data1 ,data2);

二、代码在RAM中运行
    在函数中增加  __attribute__((section (".ram_code")))  声明
    如果:bool  PwmModeCtrl(uint16_t vbat, uint16_t ibat, uint16_t duty, uint16_t Lf)
    定义函数在RAM中运行:bool __attribute__((section (".ram_code"))) PwmModeCtrl(uint16_t vbat, uint16_t ibat, uint16_t duty, uint16_t Lf)

三、可适当提高代码优化等级
    提高代码优化等级,可以缩短代码执行时间。

使用特权

评论回复
沙发
yangxiaor520| | 2023-12-29 08:05 | 只看该作者
只能进行除法运算嘛?

使用特权

评论回复
板凳
w2nme1ai7| | 2023-12-29 17:14 | 只看该作者
这种是不是属于硬件支持的math功能啊?

使用特权

评论回复
地板
suw12q| | 2023-12-29 18:19 | 只看该作者
看着还不错啊,不过除法其实可以按照移位的方式实现

使用特权

评论回复
5
p0gon9y| | 2023-12-29 19:21 | 只看该作者
缩短代码运行时间确实很有意义的

使用特权

评论回复
6
lamanius| | 2023-12-29 20:25 | 只看该作者
楼主这是直接优化等级了,这样会不会容易出现程序跑飞的情况

使用特权

评论回复
7
b5z1giu| | 2023-12-29 21:30 | 只看该作者
优化等级不建议配置,这个容易让代码运行不稳定

使用特权

评论回复
8
ex7s4| | 2023-12-29 22:37 | 只看该作者
都是寄存器操作啊,感觉很麻烦啊

使用特权

评论回复
9
t1ngus4| | 2023-12-30 07:08 | 只看该作者
挺好,不过除法用得少,基本都是加法的运算

使用特权

评论回复
10
q1d0mnx| | 2023-12-30 08:22 | 只看该作者
这种除法运算一般运用在哪儿啊?

使用特权

评论回复
11
l1uyn9b| | 2023-12-30 09:11 | 只看该作者
其实正常运行来说,执行时间也是可以接受的

使用特权

评论回复
12
liu96jp| | 2023-12-30 12:35 | 只看该作者
你这优化完成之后,执行时间能缩小多少?

使用特权

评论回复
13
zwsam| | 2024-1-8 13:02 | 只看该作者

使用特权

评论回复
14
IFXNaZhang| | 2024-1-16 16:08 | 只看该作者
XMC1300和1400系列的MATH 协处理包含了一个32 位的DIVIDER 和一个24 位的CORDIC。DIVIDER 单元实现
32bit 有符号/无符号除法, CORDIC 单元实现24bit 三角函数运算。属于硬件支持的。
下图为利用除法器运算和一般的C 库运算的比较表,可以看到利用除法器运算的除法操作会
比C 库软件运算最多快7 倍(在IAR 环境下)。(这个图表时间比较久了,可以参考下)



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

27

帖子

3

粉丝