内容介绍
内容介绍
项目描述
项目使用了beagleboard black中的PRU模块,实现了按键和LED控制的设计,主要功能为通过按键改变LED呼吸灯的频率。
软件流程图及各功能对应的主要代码片段及说明
代码比较短,在运行前需要先配置一下引脚,使用以下两条命令可以修改:
config-pin P9_27 pruin
config-pin P9_30 pruout
引脚配置完成后,就可以直接编写代码:
/*
config-pin P9_27 pruin
config-pin P9_30 pruout
*/
#include <stdint.h>
#include <pru_cfg.h>
#include "resource_table_empty.h"
#include "prugpio.h"
volatile register unsigned int __R30;
volatile register unsigned int __R31;
void main(void)
{
CT_CFG.SYSCFG_bit.STANDBY_INIT = 0;
uint32_t delay_cycles = 200;
uint32_t previous_btn = 0;
uint32_t i;
uint8_t b;
while (1)
{
if (!previous_btn)
{
if (__R31 & P9_27)
{
previous_btn = 1;
delay_cycles = delay_cycles * 2;
if (delay_cycles > 1000)
{
delay_cycles = 200;
}
}
}
else
{
if (!(__R31 & P9_27))
{
previous_btn = 0;
}
}
for(b=0;b<255;b++)
{
for(i=0;i<delay_cycles;i++)
{
__R30 ^= P9_30;
uint8_t j = 0;
while (j < b)
{
j++;
__delay_cycles(1);
}
__R30 ^= P9_30;
j = 0;
while (j < 255-b)
{
j++;
__delay_cycles(1);
}
}
}
for(b=0;b<255;b++)
{
for(i=0;i<delay_cycles;i++)
{
__R30 ^= P9_30;
uint8_t j = 0;
while (j < 255-b)
{
j++;
__delay_cycles(1);
}
__R30 ^= P9_30;
j = 0;
while (j < b)
{
j++;
__delay_cycles(1);
}
}
}
}
}
代码的主要功能是在死循环中用while循环次数来控制延时,以此控制呼吸灯的频率;再通过判断按钮的状态来更改延时函数的循环次数。通过每次按下按钮将延迟函数的循环次数翻倍,以此实现呼吸灯的频率的减半;同时对呼吸灯的频率设定下限,也就是对循环次数设置上限,当触及上限时,把循环次数修正为初始值,就可以进入下一轮频率设定的循环。
代码注意要放在原本pru example文件夹下,这样才可以使用示例项目中的Makefile文件。同时,代码保存的文件名非常讲究,必须以.pru0.c结尾,这是在makefile里面规定好的。然后直接输入make命令,就可以完成自动的编译上传以及运行。
make TARGET=task1.pru0
代码上传完成后会自动运行。
功能展示及说明
将按键和LED连接到面包板上,可以使用按键来控制LED呼吸灯的频率。具体参见视频。
对本活动的心得体会
这次活动的开发板把MCU和LINUX结合在一起使用,由Linux切换引脚复用的功能,非常新颖好玩。
附件下载
task1.pru0.c
团队介绍
无
评论
0 / 100
查看更多
猜你喜欢
Funpack3-5使用beagleboard black内置PRU来使用按键控制板载LED该项目使用了beagleboard black,实现了PRU控制LED的设计,它的主要功能为:通过开发板内的PRU来控制板载LED实现呼吸灯功能,并通过按键修改呼吸灯的频率。。
饺子sama
94
“Funpack3-5”BeagleBone® Black 的pru控制LED呼吸灯该项目使用了BeagleBone Black,实现了pru控制LED呼吸灯的设计,它的主要功能为:该项目使用了MobaXterm软件,C语言,实现了控制lLED的闪烁频率,它的主要功能为:基于BeagleBone Black板卡上的pru功能,通过按键去改变LED灯闪速的频率大小。
Y_HT
164
Funpack3-5 基于 BeagleBone® Black 使用PRU控制LED实现呼吸灯该项目使用了BeagleBone,实现了使用PRU控制LED实现呼吸灯的设计,它的主要功能为:使用PRU控制LED实现呼吸灯。
安先生
102