白姐透特今晚开什么码

打印

[在线研讨会]如何高效的把一个数组左移一bit?

[复制链接]
1527|54
跳转到指定楼层
楼主
STM32F103如何高效的对一维数组向左移动一个bit?  就是LED点阵上使用的,我设计的效率相对市面上的成品LED控制卡,效率还是低了点。。都是用的是STM32F103C8T6系列。

forum(4).jpg(29.54 KB, 下载次数: 0)

forum(4).jpg

相关资料

沙发
 楼主|2019-12-22 09:33|只看该作者
有大神知道怎么搞吗?
板凳
|2019-12-22 10:13|只看该作者
M3核,因为有位带,甚至可以用DMA来做移位。
LED控制卡不熟悉,不过让我做,应该会考虑调整一下刷新起始位置,不需要真的移位吧。
话说回来,不过几百个字节,在内存里处理一下,能慢到哪去?
地板
|2019-12-22 11:19|只看该作者
窗口方式刷新,根据左右移动或上下移动,调整扫描方式
5
 楼主|2019-12-22 12:01|只看该作者
linnjing 发表于 2019-12-22 10:13
M3核,因为有位带,甚至可以用DMA来做移位。
LED控制卡不熟悉,不过让我做,应该会考虑调整一下刷新起始位 ...

DMA能做位带移动?
6
 楼主|2019-12-22 12:11|只看该作者
没大侠搞这行的?
7
|2019-12-22 14:20|只看该作者
无特殊指令的话,常规手段最简单是查表法移位,空间换时间。
8
|2019-12-22 16:59|只看该作者
首先数组包装成32位,一次移动32个。用汇编语言的带进位循环右移。
9
|2019-12-22 18:12|只看该作者
本帖最后由 xch 于 2019-12-22 18:29 编辑
fjhcpu 发表于 2019-12-22 12:01
DMA能做位带移动?

好像不行。只能MCU
10
|2019-12-22 18:37|只看该作者
fjhcpu 发表于 2019-12-22 09:33
有大神知道怎么搞吗?

bitband 操作可能是最快的。
11
 楼主|2019-12-22 19:02|只看该作者
Diyer123 发表于 2019-12-22 14:20
无特殊指令的话,常规手段最简单是查表法移位,空间换时间。

如何查表,还不知道有这方法,讲讲看呀。
12
|2019-12-22 19:39|只看该作者
效率低,是指不能在要求的时间内移位完吗?有没有具体的比较数据或者出现异常现象?如果是这样,可能要更高频率的单片机了。
13
|2019-12-22 20:38|只看该作者
fjhcpu 发表于 2019-12-22 19:02
如何查表,还不知道有这方法,讲讲看呀。

已经说的很明白了……再具体你就得花钱发个外包贴了。
14
|2019-12-22 20:49|只看该作者
整个函数用汇编语言来写。首先清 C 标志位,然后对每一个元素执行一次 rrxs 指令,数据整体左移一位,原来的 C 标志位移到最低位,同时把最高位放到 C 标志位里。每次循环判断结束条件的时候记得保留上一条指令产生的 C 标志位。
15
|2019-12-22 23:15|只看该作者
我也做实时显示控制卡,128*16的屏,显存就是16*16=256字节,而实际我会做成144*16的显存,即16*18=288字节,每移位一个点,就是操作一行18字节移一个点,16行都要移一次,一共要操作288个字节,我用STC8A8K64S4A12的8位机都可以做到256*32点,而用STM32F103系列的,轻松可以做到256*64点或以上。
16
 楼主|2019-12-23 07:19|只看该作者
coody 发表于 2019-12-22 23:15
我也做实时显示控制卡,128*16的屏,显存就是16*16=256字节,而实际我会做成144*16的显存,即16*18=288字节 ...

左移动速度快,亮度也不降低?
17
|2019-12-23 08:48|只看该作者
DMA + BITBAND确实是最高效的
18
 楼主|2019-12-23 09:02|只看该作者
bit位段不能用dma吧?
19
|2019-12-23 09:38|只看该作者
能不能用联合体,定义支持最长的整型和数组,移位整型变量,处理最高位,最后使用数组?
20
|2019-12-23 09:44|只看该作者
xch 发表于 2019-12-22 18:37
bitband 操作可能是最快的。

数组有点大,位带区域,这个芯片够吗?
扫描二维码,随时随地手机跟帖

本版积分规则

我要发帖投诉建议创建版块

快速回复

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

论坛热帖

关闭

热门推荐上一条 /6 下一条

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