Циферки выводятся так:
Код
Xuint32 data;
...
data = ...;
...
print(" Data 0x");
putnum( data );
print("\r\n");
Прерывания пользуются так (пример для кнопок с ML402);
Код
void InterruptHandler()
{
// PB interrapt processing
if( XIntc_mGetIntrStatus( XPAR_INTC_0_BASEADDR ) & XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK )
{
// Detect button
switch( XGpio_mGetDataReg(XPAR_PUSH_BUTTONS_POSITION_BASEADDR, 1) )
{
case GPIO_PB_N_MASK : // move
block_cur_y_pos -= 10;
break;
case GPIO_PB_S_MASK : // move
block_cur_y_pos += 10;
break;
case GPIO_PB_E_MASK : // move
block_cur_x_pos += 10;
break;
case GPIO_PB_W_MASK : // move
block_cur_x_pos -= 10;
break;
}
// Clear GPIO interrupt status
XGpio_mWriteReg( XPAR_PUSH_BUTTONS_POSITION_BASEADDR, XGPIO_ISR_OFFSET, XGPIO_IR_CH1_MASK );
// Clear IntC interrupt status
XIntc_mAckIntr( XPAR_INTC_0_BASEADDR, XPAR_PUSH_BUTTONS_POSITION_IP2INTC_IRPT_MASK );
}
}
Драйвера у Xilinx двух уровней, я пользую нижний <ip core driver>_l.h, здесь всегда приходится подставлять базовый адрес ядра.
Все функции называются X<ip core>_m<function>.
Путь к драйверам (пример) C:\Xilinx\10.1\EDK\sw\XilinxProcessorIPLib\drivers\gpio_v2_12_a\src. Все функции хорошо прокомментированы.
Все параметры - базовые адреса, номера прерываний, всяческие маски находятся в файле xparameters.h.
Набор заголовочных файлов примерно такой:
// Всякая батва от проца
#include "xparameters.h"
#include "xbasic_types.h"
#include "mb_interface.h"
// Низкоуровневые драйверы
#include "xintc_l.h"
#include "xgpio_l.h"
// Классика
#include "stdio.h"
Сообщение отредактировал Omen_13 - Feb 21 2010, 12:47
Причина редактирования: Оформление кода