LEDs
资源
Psoc6-evaluationkit-062S2开发板
RTTHREAD STUDIO (版本4.1.0)
ModusToolbox™ (安装这个软件才能安装kit插件)
项目建立/程序下载
Psoc6-evaluationkit-062S2开发板使用DAP_LINK方式下载,开发板有两个芯片,其中一块芯片用作DAP_LINK下载,在安装好插件的前提下,可以直接通过DAP_TYPEC下载
rtthread 设备模型
RT-Thread 提供了一套简单的 I/O 设备模型框架,如下图所示,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。
应用程序通过 I/O 设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互。
I/O 设备管理层实现了对设备驱动程序的封装。应用程序通过图中的”I/O设备管理层”提供的标准接口访问底层设备,设备驱动程序的升级、更替不会对上层应用产生影响。这种方式使得设备的硬件操作相关的代码能够独立于应用程序而存在,双方只需关注各自的功能实现,从而降低了代码的耦合性、复杂性,提高了系统的可靠性。
RT-Thread 的设备模型是建立在内核对象模型基础之上的,设备被认为是一类对象,被纳入对象管理器的范畴。每个设备对象都是由基对象派生而来,每个具体设备都可以继承其父类对象的属性,并派生出其私有属性,下图是设备对象的继承和派生关系示意图。
LED点灯
rtthread使用了设备模型,这里的api使用了PIN设备模型
/*pin初始化*/
rt_pin_mode(LED_PIN1, PIN_MODE_OUTPUT);
rt_pin_mode(LED_PIN2, PIN_MODE_OUTPUT);
for (;;)
{
/*LED灯引脚设置高电平*/
rt_pin_write(LED_PIN1, PIN_HIGH);
rt_pin_write(LED_PIN2, PIN_LOW);
/*延时100ms*/
rt_thread_mdelay(100);
rt_pin_write(LED_PIN1, PIN_LOW);
rt_pin_write(LED_PIN2, PIN_HIGH);
rt_thread_mdelay(100);
}
按键中断
继续参考PIN设备模型 程序实现通过按键翻转LED灯
#define LED_PIN1 GET_PIN(0, 0)
#define LED_PIN2 GET_PIN(0, 1)
#define KEY_PIN GET_PIN(6, 2)
void led_change(void args)
{
static uint8_t state = 0;
if (state == 0)
{
state = 1;
rt_pin_write(LED_PIN1, PIN_LOW);
rt_pin_write(LED_PIN2, PIN_HIGH);
}else {
state = 0;
rt_pin_write(LED_PIN1, PIN_HIGH);
rt_pin_write(LED_PIN2, PIN_LOW);
}
rt_kprintf("turn on beep!n");
}
int main(void)
{
rt_pin_mode(LED_PIN1, PIN_MODE_OUTPUT);
rt_pin_mode(LED_PIN2, PIN_MODE_OUTPUT);
/ 按键引脚为输入模式 /
rt_pin_mode(KEY_PIN, PIN_MODE_INPUT_PULLUP);
/ 绑定中断,下降沿模式,回调函数名为beep_on /
rt_pin_attach_irq(KEY_PIN, PIN_IRQ_MODE_FALLING, led_change, RT_NULL);
/ 使能中断 */
rt_pin_irq_enable(KEY_PIN, PIN_IRQ_ENABLE);
for (;;)
{
}
}
全部0条评论
快来发表一下你的评论吧 !