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