- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MTK手机设备驱动编写简介
首先需要注意两个宏定义
1. __CUST_NEW__
程序中有多处用该宏将代码隔开
Make文件中若如下定义:
DRV_CUSTOM_TOOL_SUPPORT = TRUE
Option.mak文件中
ifdef DRV_CUSTOM_TOOL_SUPPORT
ifeq ($(strip $(DRV_CUSTOM_TOOL_SUPPORT)),TRUE)
COM_DEFS += __CUST_NEW__
endif
endif;2. WIN32
#ifndef WIN32
………………
#endif
用该宏将真机与模拟器的代码分隔开;
1 GPIO口的初始化
方法:两种:
1.工具
\custom\drv\Drv_Tool\DrvGen.exe
修改: \custom\drv\misc_drv\IWIT23_NEP_07A_PMJ_BB\codegen\codegen.dws
2.程序中修改:Gpio_drv.c void GPIO_init(void)
2操作
1. 写状态
a. 模式修改
GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
b. 方向修改
void GPIO_InitIO(char direction, char port)
c. 置高与置低
GPIO_WriteIO(char data, char port)
;
d. 上拉与下拉的使能
void GPIO_PullenSetup(kal_uint16 pin, kal_bool enable)
2. 读取状态
a. 返回模式
char GPIO_ReturnMode(char port);
b. 返回方向
char GPIO_ReturnDir(char port);
c. 返回电平值
char GPIO_ReturnDout(char port);
3. GPIO使用中需注意的问题;
1. 中断个数
8个
EINT0, EINT1为专用中断, EINT2-7 与GPIO等功能复用
2. 设置中断模式
通过DRV_TOOL或Gpio_init(void)来初始化,也可在程序中通过
GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)随时修改
3. 中断注册函数
在某个TASK中注册中断,建议注册在AUX_TASK中,便于管理
EINT_Registration(FLICK_EINT_NO, KAL_TRUE, flick_state,
FLICK_EINT_HISR, KAL_TRUE);
4. 中断处理函数
以FLICK及BATTERY两个中断为例:
;
void FLICK_EINT_HISR(void) //added by Jeff Ji 071024
{
ilm_struct *flick_ilm;
aux_id_struct *aux_id_data;
if (flick_state == LEVEL_HIGH)
{
aux_id_data = (aux_id_struct*)
construct_local_para(sizeof(aux_id_struct), TD_CTRL);
aux_id_data-aux_id = AUX_ID_FLICK_OFF;
DRV_BuildPrimitive(flick_ilm,
MOD_EINT_HISR,
MOD_UEM,
MSG_ID_AUX_ID,
aux_id_data);
}
;
else
{
aux_id_data = (aux_id_struct*)
construct_local_para(sizeof(aux_id_struct), TD_CTRL);
aux_id_data-aux_id = AUX_ID_FLICK_ON;
DRV_BuildPrimi
您可能关注的文档
- Matlab北航教程第4章.ppt
- MATLAB的简介及使用.ppt
- MATLAB集成环境.ppt
- lv品牌历史.设计风格.经典作品.ppt
- MATLAB7.0使用详解_第19章Word和Excel环境下.ppt
- L_Linux编程基础.ppt
- MBA的管理学system解说.ppt
- MicrosoftOffice高级应用-PPT和Office综合应用.ppt
- LePadAccessories20110210选件产品简介.ppt
- MicrosoftWord2010培训使用Word导航窗格在文档中搜索及来回移动.ppt
- 2025年电动巡逻艇在河流水域防洪减灾应用可行性分析报告.docx
- 2025年生态旅游度假区旅游扶贫与乡村振兴协同发展报告.docx
- 2025年电动巡逻艇在沿海景区水域安全管理的可行性研究.docx
- 2025年电动巡逻艇水域作业成本控制与优化报告.docx
- 2025年电动巡逻艇水域执法效能提升策略报告.docx
- 2025年电竞战队电竞游戏内容创作与版权保护研究报告.docx
- 2025年直播带货助力乡村特色农产品上行路径探索报告.docx
- 2025年电力市场改革与能源消费革命研究报告.docx
- 2025年电动巡逻艇水域执法效率与成本控制报告.docx
- 2025年电动巡逻车在城市安防系统中的车辆性能与可靠性测试.docx
文档评论(0)