?? hal_pit.c
字號:
/*
* 測試硬件平臺:LPLD_K60 Card
* 版權所有:北京拉普蘭德電子技術有限公司
* 網絡銷售:http://laplenden.taobao.com
* 公司門戶:http://www.lpld.cn
*
* 文件名: HAL_PIT.c
* 用途: PIT底層模塊相關函數
* 最后修改日期: 20120321
*
* 開發者使用協議:
* 本代碼面向所有使用者開放源代碼,開發者可以隨意修改源代碼。但本段及以上注釋應
* 予以保留,不得更改或刪除原版權所有者姓名。二次開發者可以加注二次版權所有者,
* 但應在遵守此協議的基礎上,開放源代碼、不得出售代碼本身。
*/
/*
*******需用到定時中斷,請在isr.h中粘貼一下代碼:*********
//PIT模塊中斷服務定義
#undef VECTOR_084
#define VECTOR_084 LPLD_PIT_Isr
#undef VECTOR_085
#define VECTOR_085 LPLD_PIT_Isr
#undef VECTOR_086
#define VECTOR_086 LPLD_PIT_Isr
#undef VECTOR_087
#define VECTOR_087 LPLD_PIT_Isr
//以下函數在LPLD_Kinetis底層包,不必修改
extern void LPLD_PIT_Isr(void);
***********************代碼結束*************************
*/
#include "common.h"
#include "HAL_PIT.h"
//引用總線時鐘頻率,該值在sysinit.c文件中取得
extern int periph_clk_khz;
//用戶自定義中斷服務函數數組
PIT_ISR_CALLBACK PIT_ISR[4];
/*
* LPLD_PIT_Init
* PIT通用初始化函數
*
* 參數:
* channel--PIT通道號
* |__0--PIT0
* |__1--PIT1
* |__2--PIT2
* |__3--PIT3
* period_us--中斷周期
* |__單位為微妙
* isr_func--用戶中斷程序入口地址
* |__用戶在工程文件下定義的中斷函數名,函數必須為:無返回值,無參數(eg. void isr(void);)
*
* 輸出:
* 0--配置錯誤
* 1--配置成功
*/
uint8_t LPLD_PIT_Init(uint8_t channel, uint32_t period_us, PIT_ISR_CALLBACK isr_func)
{
uint32_t ldval;
uint32_t periph_clk_mhz;
if(channel>3)
return 0;
//計算定時加載值
periph_clk_mhz = periph_clk_khz/1000;
ldval = period_us*periph_clk_mhz;
if(ldval<1)
return 0;
//開啟定時模塊時鐘
SIM_SCGC6 |= SIM_SCGC6_PIT_MASK;
// 開啟 PIT
PIT_MCR = 0x00;
if(isr_func!=NULL){
PIT_ISR[channel] = isr_func;
//在NVIC中使能PIT中斷
enable_irq(68+channel);
}
//period = (period_ns/bus_period_ns)-1
PIT_LDVAL_REG(PIT_BASE_PTR,channel) = ldval-1;
//使能中斷
PIT_TCTRL_REG(PIT_BASE_PTR,channel) = PIT_TCTRL_TIE_MASK;
//開始定時
PIT_TCTRL_REG(PIT_BASE_PTR,channel) |= PIT_TCTRL_TEN_MASK;
return 1;
}
/*
* LPLD_PIT_Isr
* PIT通用中斷底層入口函數
*
* 用戶無需修改,程序自動進入對應通道中斷函數
*/
void LPLD_PIT_Isr(void)
{
#define PIT_VECTORNUM (*(volatile uint8_t*)(0xE000ED04))
uint8_t pit_ch = PIT_VECTORNUM - 84;
//調用用戶自定義中斷服務
PIT_ISR[pit_ch]();
//清除中斷標志位
PIT_TFLG_REG(PIT_BASE_PTR,pit_ch) |= PIT_TFLG_TIF_MASK;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -