|
【Nucleo心得】+ 8x8点阵驱动 (EX01)
[复制链接]
本帖最后由 slotg 于 2014-10-5 18:21 编辑
Nucleo板的开发方式有很多种,除了大家所熟悉的KEIL,IAR等工具之外,我选择使用MBED的开发方式,这是一个全新的体验,选择MBED的原因是在这种开发环境下的编程方式就如同Arduino系统一样省略了很多对MCU内部设定等繁杂的过程,这对于初接触STM32的人来说降低了学习的难度,不用花太多时间就可以上手STM32的设计,体验编程的乐趣。当然这种开发方式也是有它的缺点:由于是在网上作业所以一定要有网络,并且这种编程方式产生出来的程序码也会比较庞大。不过MBED是免费使用的,且容易上手,对于大部份的应用也都能快速实现,因此还是很值得花时间深入研究。
Nucleo板上规划了一组跟Arduino兼容的扩充接头,这表示我们可以使用众多的Arduino扩充模块来学习相关的编程技能。Nucleo板的开箱文跟MBED的介绍,论坛上已经有很多不错的帖子可供参考,这里就不再赘述。
我的第一个实验就是使用SPI功能驱动一个8x8点阵的显示,这片板子使用了MAX7219这颗芯片,原理图如下:
芯片资料如下:
MAX7219-MAX7221.pdf
(491.3 KB, 下载次数: 20)
板子除了电源接脚外还需要连接3只接脚,分别是 DIN(MOSI),CS(SS),CLK(SCK)。
开新的工程,选择SPI例程产生的程序如下:
例程里展示了SPI的使用,将鼠标点选SPI_MOSI文字可以看到相关的脚位定义:
SPI_MOSI 定义在 PA_7。
SPI_MISO 定义在 PA_6。
SPI_CLK 定义在 PA_5。
由于点阵板还需要一只CS控制脚,我们将CS控制脚定义在 PB_6。
Nucleo板的接脚分配如下:
将相关接脚连接起来,修改例程如下:
#include "mbed.h"
const char sprite[8] = {
0xFF,
0x81,
0x81,
0x81,
0x81,
0x81,
0x81,
0xFF
};
SPI spimax(SPI_MOSI, SPI_MISO, SPI_SCK);
DigitalOut CS(PB_6);
void max7219(char reg,char dta)
{
CS = 0;
spimax.write(reg);
spimax.write(dta);
CS = 1;
}
int main()
{
max7219(0x09,0);
max7219(0x0a,8);
max7219(0x0b,7);
max7219(0x0c,1);
max7219(0x0f,0);
for(char j=0;j<8;j++) {
max7219(j+1,sprite[j]);
}
while(1) {
}
}
执行结果:
|
|