本帖最后由 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 */
- }
- }
以下的截图是编译通过的截图:
|