tms32和stm32(tms32和stm32区别)

为什么只听说过stm32的库函数

所谓库函数只是原厂为方便使用者开发方便而对MCU外设写的底层驱动而已猛没,举个浅显的例子:世知陵以前用ATMEL单片搜戚机写程序你得查看每一个寄存器说明,而用上STM32库后,就基本不用看寄存器表了,只需了解函数的用法及规则即可,上手容易,开发直观简单。

stc32单片机与stm32单片机的区别

您好,STC32单片机和STM32单片机之间有一些显著的区别。首先,STC32单片机属于8位单片机,而STM32单片机属于32位单片机。其次,STC32单片机的内存容量较小,只有1K-4K,而STM32单片机的内存容量较大,可达到128K-1M。丛坦搜此外渗历,STC32单片机的处理速度较慢,只有2MHz-20MHz,而STM32单片机的处理速信纯度较快,可达到50MHz-200MHz。此外,STC32单片机的外设支持较少,而STM32单片机的外设支持较多,可以支持多种外设,如ADC、DAC、I2C、CAN等。最后,STC32单片机的价格较低,而STM32单片机的价格较高。总之,STC32单片机和STM32单片机之间有一些显著的区别,在选择时应根据自己的需求来选择合适的单片机。

stm32f407和tms320f28335的区别是什么?

论坛上看到的比较。\x0d\x0a这几天刚拿到STM32F4的评估板,STM32F4这次的卖点就是FPU和DSP指令集,关注了挺长时间,这次就想测试一下STM32F4的浮点性能,如果满足就升级自己飞控的架构。本来用STM32F103+28335双核架构,F28335当浮点处理器用,调试起来比较麻烦,所以一直想换了。\x0d\x0a\x0d\x0a测试代码就是用的我飞控的算法,全部使用浮点运算,包含姿态和位置两个7阶和9阶的卡尔曼滤波器,包含大量的矩阵运算以及部分导航算法和PID控制器等,还有部分IF和SWITCH包含跳转的判定语句,相比纯算法算是一个比较综合的运算。\x0d\x0a\x0d\x0a测试环境:\x0d\x0aF28335:CCS V3.3,使用TI优化的数学库,不开优化,程序在RAM里执行。\x0d\x0aSTM32F4:KEIL V4.7,使用ARM优化的数学库,不开优化。\x0d\x0a\x0d\x0a测试方法:\x0d\x0aF28335:在飞控算法入口设置断点,清零CCS的CPU计数器(profile-clock),然后STEP OVER,记录下CPU的计数\x0d\x0aSTM32F4:在飞控算法入口设置断点,记录下Register窗口内算states计数器,然后STEP OVER,记录下新的计数器数值,与之前的数值相减得到CPU计数\x0d\x0a\x0d\x0a测试结果:\x0d\x0aF28335:253359个CPU周期,除以150MHZ,大约是1.69ms\x0d\x0aSTM32F4:一共285964个周期,除以168MHZ,大约是1.7ms,比F28335略慢\x0d\x0a\x0d\x0a结论就是,对于包含相对较多跳转的综合浮点算法而言,STM32F4似乎并不慢多少。\x0d\x0a\x0d\x0a抛开架构因素,从纯浮点运算方面来看的话。STM32F4的FPU加减乘指令VADD.F32、VSUB.F32、VMUL.F32都是单周期指令,而除法VDIV.F32耗费14个周期。\x0d\x0a例如:a = a / b;产生的汇编为:\x0d\x0a0x08000220 ED900A00 VLDR s0,[r0,#0x00]\x0d\x0a\x0d\x0a0x08000224 4804 LDR r0,[pc,#16] ; @0x08000238\x0d\x0a\x0d\x0a0x08000226 EDD00A00 VLDR s1,[r0,#0x00]\x0d\x0a\x0d\x0a0x0800022A EE801A20 VDIV.F32 s2,s0,s1\x0d\x0a\x0d\x0a0x0800022E 4803 LDR r0,[pc,#12] ; @0x0800023C\x0d\x0a\x0d\x0a0x08000230 ED801A00 VSTR s2,[r0,#0x00]\x0d\x0a复制代码 F28335: F28335的FPU有加减乘法指令,都是双周期的,由于没有硬件除法指令,F28335这里是用软件模拟的浮点除法,汇编可以看到 LCR $div_f32.asm字样,需要19个时钟周期。\x0d\x0a例如:a = a * b,产生的汇编为:\x0d\x0a0087B2 E203 MOV32 *-SP[4], R0H\x0d\x0a\x0d\x0a0087B4 E2AF MOV32 R1H, *-SP[6], UNCF\x0d\x0a\x0d\x0a0087B6 E700 MPYF32 R0H, R1H, R0H\x0d\x0a\x0d\x0a0087B8 7700 NOP //需要让流水线等待FPU运算完毕,所以需要NOP \x0d\x0a\x0d\x0a0087B9 E203 MOV32 *-SP[4], R0H\x0d\x0a\x0d\x0a复制代码 除法:\x0d\x0a0087BD E203 MOV32 *-SP[4], R0H\x0d\x0a\x0d\x0a0087BF E2AF MOV32 R1H, *-SP[6], UNCF\x0d\x0a\x0d\x0a0087C1 7640 LCR $div_f32.asm:52:71$\x0d\x0a\x0d\x0a0087C3 E203 MOV32 *-SP[4], R0H\x0d\x0a复制代码 结论:\x0d\x0a可见单从浮点处理器来说,F28335是不如F4的FPU的。但是由于F28335是哈佛架构,有较长的流水线,可以在一个时钟周期里完成读取,运算和存储,所以程序连续运行的话,就比ARM快上许多许多,比如执行一次a = a + b只需要5个时钟周期,但是缺点就是一旦要跳转,就必须清空流水线,如果是\x0d\x0afor(i = 0;i

回答于 2022-11-17

361知讯网

本文链接:http://pdidw.com/keil/56321.html

发表评论

评论列表

还没有评论,快来说点什么吧~