以下讨论如何修改Hal层或增加新的驱动函数使Z-Stack适应目标硬件。对于修改,include文件夹下不得修改,target文件夹中的驱动函数可按需修改,硬件驱动配置在hal_board_cfg.h中修改。对于添加新驱动功能函数,头文件置于include中,驱动文件置于target中,如果GPIO引脚冲突或不需要,则可通过编译标志放弃某些驱动的编译,GPIO的特殊配置在hal_board_cfg.h定义,同时工程中应添加文件夹容纳新增驱动函数。在options中选择Exclude from build停止某些目标驱动的编译。GPIO的配置分布在不同的位置,需要修改的话要修改hal_board_cfg.h。
中断响应宏定义为HAL_ISR_FUNCTION(f,v),具体看hal_mcu.h。使用示例如下:
HAL_ISR_FUNCTION(prototype, vector)
{
/*Do something when this interrupt happens!!!*/
}
其中,prototype为程序名,vector为中断向量,有如下定义,
#define RFERR_VECTOR VECT( 0, 0x03 ) /* RF TX FIFO Underflow and RX FIFO Overflow */<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
#define ADC_VECTOR VECT( 1, 0x0B ) /* ADC End of Conversion */
#define URX0_VECTOR VECT( 2, 0x13 ) /* USART0 RX Complete */
#define URX1_VECTOR VECT( 3, 0x1B ) /* USART1 RX Complete */
#define ENC_VECTOR VECT( 4, 0x23 ) /* AES Encryption/Decryption Complete */
#define ST_VECTOR VECT( 5, 0x2B ) /* Sleep Timer Compare */
#define P2INT_VECTOR VECT( 6, 0x33 ) /* Port 2 Inputs */
#define UTX0_VECTOR VECT( 7, 0x3B ) /* USART0 TX Complete */
#define DMA_VECTOR VECT( 8, 0x43 ) /* DMA Transfer Complete */
#define T1_VECTOR VECT( 9, 0x4B ) /* Timer 1 (16-bit) Capture/Compare/Overflow */
#define T2_VECTOR VECT( 10, 0x53 ) /* Timer 2 (MAC Timer) */
#define T3_VECTOR VECT( 11, 0x5B ) /* Timer 3 (8-bit) Capture/Compare/Overflow */
#define T4_VECTOR VECT( 12, 0x63 ) /* Timer 4 (8-bit) Capture/Compare/Overflow */
#define P0INT_VECTOR VECT( 13, 0x6B ) /* Port 0 Inputs */
#define UTX1_VECTOR VECT( 14, 0x73 ) /* USART1 TX Complete */
#define P1INT_VECTOR VECT( 15, 0x7B ) /* Port 1 Inputs */
#define RF_VECTOR VECT( 16, 0x83 ) /* RF General Interrupts */
#define WDT_VECTOR VECT( 17, 0x8B ) /* Watchdog Overflow in Timer Mode */
要修改中断响应函数可直接在定义处修改,要添加新的中断响应则需要目标微控制器的头文件。
文章评论(0条评论)
登录后参与讨论