本帖最后由 ddllxxrr 于 2015-2-14 13:00 编辑
这个程序是调用,CMSIS中的滴答时钟来实现1秒钟延时。
首选建立ASF工程,然后选择SAM4S的芯片,我这里选择ATSAM4SD32C
然后系统自动建立程序框架,并且还有LED程序。
然后加入Delay routines模块,
最后键入以下程序:
- /**
- * \file
- *
- * \brief Empty user application template
- *
- */
- /**
- * \mainpage User Application template doxygen documentation
- *
- * \par Empty user application template
- *
- * This is a bare minimum user application template.
- *
- * For documentation of the board, go \ref group_common_boards "here" for a link
- * to the board-specific documentation.
- *
- * \par Content
- *
- * -# Include the ASF header files (through asf.h)
- * -# Minimal main function that starts with a call to board_init()
- * -# Basic usage of on-board LED and button
- * -# "Insert application code here" comment
- *
- */
- /*
- * Include header files for all drivers that have been imported from
- * Atmel Software Framework (ASF).
- */
- /**
- * Support and FAQ: visit <a href="http://www.atmel.com/design-support/">Atmel Support</a>
- */
- #include <asf.h>
- #include "conf_board.h"
- static volatile uint32_t ticks = 0U;
- void SysTick_Handler(void)
- {
- ticks ++;
- }
- int main (void)
- {
- sysclk_init();
- board_init();
-
- // Insert application code here, after the board has been initialized.
- if(SysTick_Config(sysclk_get_cpu_hz()/(uint32_t)1000))
- {
- while(1)
- {
- }
- }
- // This skeleton code simply sets the LED to the state of the button.
- while (1) {
- // Is button pressed?
- //if (ioport_get_pin_level(BUTTON_0_PIN) == BUTTON_0_ACTIVE) {
- // Yes, so turn LED on.
- ioport_set_pin_level(LED_0_PIN, LED_0_ACTIVE);
- delay_ms((uint32_t)1000);
- //} else {
- // No, so turn LED off.
- ioport_set_pin_level(LED_0_PIN, !LED_0_ACTIVE);
- delay_ms((uint32_t)1000);
- //}
- }
- }
编译通过时,下进开发板,发现LED0每一秒换一下亮灭的状态。
这个程序就是每记到1000就换一下状态。
|