阅读本章之前可以简单看看我的上一篇博客<430数据类型浅谈>430数据类型浅谈
当我们需要对一些数据进行加减乘除等运算时需要考虑是否会出现溢出等情况
430的数据运算基本和C/C艹保持一致,也略有不同
下面我们详细讲讲430的硬件乘法器
来死狗!
提示,任何基础操作都需要在用户指导手册下进行
1 硬件乘法器相对于430来说相当于外设,不会干扰CPU本身的活动,硬件乘法器由CPU进行指令加载和读取的外围寄存器
2 特点
<1>支持无符号运算
<2>支持有符号运算
<3>支持无符号累乘
<4>支持有符号累乘
<5>支持 16X16 、8X8、8X16、16X8位运算 操作的数据类型由写入数据的第一个地址决定
例如 char a=10; unsigned int b=2;a=a*b;a是8位,b是16位,硬件乘法器执行的就是 8X16位操作(不理解看看我之前写的430C/C艹数据类型)
硬件乘法器框图如下
3 硬件乘法器寄存器
硬件乘法器有两个16位操作寄存器 OP1 OP2(也就是说我们需要处理的数据会放在这两个寄存器里)
3个结果寄存器
RESLO存储结果的低位,RESHI存储结果的高位,SUMEXT存储结果的相关信息
4 阈值
硬件乘法器是无法自动识别是否出现下溢或上溢出
累加器范围为正数是0~7FFF FFFF负数0FFFF FFFF ~ 8000 0000
两个负数产生的结果在正数范围内会发生欠流,两个正数结果在负数范围内会发生溢出
在这两种情况下SUMEXT会保留符号信息
0FFFF表示发生溢出,0000表示发生欠流
所以说呢我们需要在每次使用乘法器后进行一次数值判断,判断是否发生数值溢出等
用户指导手册
芯片管脚手册
推荐教学视频
https://www.bilibili.com/video/BV1cE411Z79d?from=search&seid=15656799615629348503
https://www.bilibili.com/video/BV1rE41167yG?from=search&seid=6968580456886645765
MSP430 C语言例程
链接:https://pan.baidu.com/s/1z-q4JGVUzTmJrgeurAExYw
提取码:t2qa
链接:https://pan.baidu.com/s/12bALa0_v6j4bAIcULMtzJQ
提取码:0xv9
TI官网提供例程
链接:https://pan.baidu.com/s/1GBXAUFL5opM9LbreQ7zsNw
提取码:1gn6
博主自己写的例程百度网盘链接:
链接:https://pan.baidu.com/s/1Ma6QNTcUHt42qzZKeCa3lA
提取码:j5k7