本次使用的开发板不能以简单点灯操作为内容,一起超越简单的点灯实验,不过依然是迈不开点灯这一步,所以也是以点灯来作为本次活动编程体验的开始,熟悉核心板的开发流程和节奏。
首先我们要了解一下硬件部分:
我们首先实现的就是这个LED的控制,上电后可以看到这个LED是没有点亮的,那么就下来我们就使用e2studio进行程序的控制,打开软件,之前我们创建了一个小测试工程,接下来就在这个的基础上进行我们的程序编写。
在此之前我们看一下时钟配置:
开发板的主晶振采用的是24MHz,我们如果要使用USB HS,在设计的时候只能选择12/24/48MHz晶振,要注意。注意修改外部时钟参数,初始建立的的时候外部时钟默认是20MHz的:
通过简单配置使其主频依然输出是480MHz;
接下来就进行我们的引脚配置,上图可以看到我们使用LED控制的引脚是PA01,有两种方法进行引脚的配置:
第一种是列表配置方法:
另外一种是视图配置方法:
这种方法还是要到列表里看一下具体配置是否符合我们的要求。
然后就可以生成初始化代码了,点击那个绿色图标,相关代码存储在这里:
g_bsp_pin_cfg是个结构体,在pin_data.c文件中:
可以看到我们在配置文件配置引脚已经初始化完成了。
在使用RTOS时,程序从main函数开始进行线程调度;而在没有使用RTOS时,C语言程序的入口函数main函数调用了hal_entry函数。由于我们新建的工程没有选用RTOS,因此,用户程序从hal_entry函数开始执行。用户可以直接打开"\src\hal_entry.c"文件,在hal_entry函数里编写代码。
这里我们先实现阻塞式的循环点灯,实现LED灯的闪烁效果,首先初始化配置 LED 引脚, 然后在一个死循环里面重复此流程LED 灯亮,延时1s,LED 灯灭,延时1s,然后 LED 灯又亮。 如此反复循环,就能实现 LED 灯的闪烁效果。
使用 R_BSP_SoftwareDelay 函数可以进行延时,LED 灯维持亮和灭这两种状态的时间由此函数决定。 它的第一个参数表示延时的时间量,第二个参数表示时间单位。
时间单位参数可选:
BSP_DELAY_UNITS_SECONDS,表示秒;
BSP_DELAY_UNITS_MILLISECONDS,表示毫秒;
BSP_DELAY_UNITS_MICROSECONDS,表示微秒。
为此我们构建了LED的阻塞式的闪烁函数:
#define Pin_LEDUser BSP_IO_PORT_10_PIN_01
#define LEDUser_ON R_IOPORT_PinWrite(&g_ioport_ctrl, Pin_LEDUser, BSP_IO_LEVEL_LOW)
#define LEDUser_OFF R_IOPORT_PinWrite(&g_ioport_ctrl, Pin_LEDUser, BSP_IO_LEVEL_HIGH)
实际效果可参见效果展示视频中的"LED阻塞式闪烁"部分.后续会发布制作完成的视频
我们本次的RA8核心板体验不仅限于点灯,不过也无法绕开点灯,以此为突破口进行各种功能的体验.
|