?? alarm
字號:
/*
* 聲明:本范例源于書籍‘NiosII軟件架構解析’
* 作者:蔡偉綱
* 博客地址: http://NiosII.cublog.cn
*
* 一、功能: Alarm演示代碼.
*
* 二、相關說明:
* 由于NiosII IDE的ISS(Instruction Set Simulation)支持JTAG_UART和定時
* 器的仿真功能,所以該源碼可以運行在ISS模式下,而無須任何硬件開發板的支持.
*
* 三、運行前提:
* 1. 選擇包含JTAG_UART和具有周期中斷功能的定時器的NiosII系統(ptf文件);
* 2. 在系統庫屬性中完成下面的配置:
* (1) 將stdout映射到JTAG_UART;
* (2) 將具有周期中斷功能的定時器映射為系統時鐘;
*
*/
#include <stdio.h>
#include "sys/alt_alarm.h"
#include "alt_types.h"
//定義my_alarm_callback函數的重復調用周期
//INTEVAL_TICK不能太大,因為ISS對定時器的仿真需要很長的時間,這里取1即可
//在SOPC Builder中對定時器周期的設定也不要太大,1ms即可
#define INTEVAL_TICK 1 //單位:系統時鐘周期
/* 欲注冊為Alarm的callback函數; */
alt_u32 my_alarm_callback (void* context)
{
static int CallCounter = 0;
CallCounter++;
//建議用戶在此處設置斷點,然后觀測變量CallCounter,
//從而得知my_alarm_callback被調用了幾次;
//決定在返回后的多少個系統時鐘周期后,my_alarm_callback函數再次被調用;
return INTEVAL_TICK;
}
int main()
{
//在注冊alarm之前,必須先定義一個alt_alarm類型的變量(無須初始化),
//并將它作為alarm注冊函數alt_alarm_start的輸入參數;
static alt_alarm alarm;
//當alt_alarm_start注冊成功時返回0,否則返回負數;
if(
alt_alarm_start(&alarm,
INTEVAL_TICK,
my_alarm_callback,
NULL
) < 0
)
{
printf ("No system clock available\n");
}
while (1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -