基本输入输出使用和裸机工程建立 这个测试我做了好几天,之前曾经使用过EFM8的环境,但是发现这个版本对EFR32MG22的支持特别不好理解,似乎是不希望我们以裸机的方式使用他的输入输出接口。虽然我们可以看到安装的几个SDK都是支持当前这个CPU的,但是安装后的库文件中却没有这个CPU的相关信息。 如上图所示,库的描述中是包含EFR32MG22C224F512IM32信息描述的,但是实际的库文件中却不支持。如下图所示,V1.1版本的gecko库中没有EFR32MG22的相关信息。 1. 裸机工程创建 第一步:我们新建一个工程,选择“SiliconLabs MCU Project”,然后下一步 第二步:可以看到,如果我们连接了实际设备,通过Jtag系统已经给我们指定了板卡以及相应的控制器,我们这里要注意选择SDK为如图所示,否则后面的工程建立选择会缺少好几项。 第三步:选择“Empty C Program”项,点击先一步 第四步:输入一个工程名,这里输入“t2”,这个随便什么名字。注意,with project files项最好选择第二个,后面会比较好处理。然后下一步。 第五步:编译器选择,这里只有一个,GNU ARM V7.2.1版本,如果还有其它版本的编译器,尤其是4.9版本的,一定不要勾选,他还不支持这个处理器。点击“finish”,完成工程建立。 第六步:按下图方式,必须执行一次编译动作,编译的结果一定是错误的,因为前面说了,这个SDK还不支持我们的CPU,没关系,后面调整一下。 第七步:SDK切换。点击工程名,鼠标右键,选择属性,如下图所示,将SDK调整为v2.7.6版本,相应提示肯定回答。然后重新编译工程,可以正确编译通过了。 2. 配置硬件 Simplicity StudioIDE在使用EFM8时,其硬件配置和代码生成功能相当强大,让开发人员完全不用担心设备驱动的问题。对于EFR32MG22的支持似乎没有想象中好。 我们在工程名上右键,如下图所示,新建一个配置文件,然后下一步会打开一个硬件配置环境。 我们可以看到和实际CPU相同封装的一个图形出现在屏幕中央,根据需要我们可以选择对相应引脚的配置。配置完成后,点击保存按钮,会生成一个硬件配置文件hal-config.h。 3. 基本输入输出控制编程 这次测试的是brd4183a无线模块,根据接口定义,可以了解到,PB00接主板的button0,PB01接主板LED0 。 按照定义,在硬件配置器中调整相应引脚的定义,并生成hal-config.h配置文件。 打开工程中的main.c文件。我们需要引用头文件hal-config.h.为了完成输入输出引脚的控制,首先应该完成GPIO时钟的使能。 //开启GPIO时钟使能 CMU->CLKEN0 = (0x01<< 26); 然后完成IO引脚模式初始化 //配置GPIO引脚的输入输出状态 GPIO->P[LED0_PORT].MODEL |=(4 << LED0_PIN*4); GPIO->P[BTN0_PORT].MODEL |= (1<< BTN0_PIN*4); 下面就是根据实际需要控制IO引脚了。我这里实现的是根据Button0的状态控制LED0的显示。 if(GPIO->P[BTN0_PORT].DIN& (1<<BTN0_PIN)) //读取输入状态 GPIO->P[GPIO_PORTB].DOUT&= ~bitcode[LED0_PIN]; //控制相应开出 else GPIO->P[GPIO_PORTB].DOUT |=bitcode[LED0_PIN]; 实际测试,完成了实际目标,实现了通过按键控制LED显示状态的功能。
|