本帖最后由 ddllxxrr 于 2015-9-2 22:03 编辑
在这个例子中,是软件触发事件,不用任何的硬件。
程序也很简单,首先在ASF Wizard 中加入EVENT事件模块,然后在ASF EXPLORER中打开快速指导。
按快速指导建立程序。然后编译。我在编译时遇到了一个提示,说是.h文件找不到,后来,我到模块那里后边的括号,换成hooK,编译就通过了,原来不同的模块方式,调用不同的文件。
以下是程序:
#include <asf.h>
#define CONF_EVENT_GENERATOR EVSYS_ID_GEN_NONE
#define CONF_EVENT_USER EVSYS_ID_USER_PORT_EV_0
static void configure_event_channel(struct events_resource *resource)
{
struct events_config config;
events_get_config_defaults(&config);
config.generator = CONF_EVENT_GENERATOR;
config.edge_detect = EVENTS_EDGE_DETECT_RISING;
config.path = EVENTS_PATH_SYNCHRONOUS;
config.clock_source = GCLK_GENERATOR_0;
events_allocate(resource, &config);
}
static void configure_event_user(struct events_resource *resource)
{
events_attach_user(resource, CONF_EVENT_USER);
}
int main (void)
{
struct events_resource example_event;
system_init();
configure_event_channel(&example_event);
configure_event_user(&example_event);
while (events_is_busy(&example_event)) {
/* Wait for channel */
};
events_trigger(&example_event);
while (true) {
/* Nothing to do */
}
}
以下的截图是编译通过的截图:
|