单片机常用外设开发流程(1)(IMX6ULL为例)
1.通过GPIO引脚控制led灯和key按钮
(1)设置多路复用的引脚(SW_MUX_CTL)也可以说是选择让引脚以哪种工作模式工作
(2)设置电器属性(SW_PAD_CTL)上拉、等等...
(3)设置GPIO的方向(GDIR),输入 和 输出
(4)设置时钟(CCM)
2.定仪器(GPT)实现延时 (始终源+2个输入捕获+3个比较通道)
(1)选择定时器时钟源寄存器进行配置
时钟源分很多种,在IMX6ULL中有2部分5种分别是
第一部分包括2种:外部时钟(GPT_CLK)和晶体管震荡时钟(ipg_clk_24M)
第二部分包括3种:高频时钟(ipg_clk_highfreq)、低频时钟(ipg_clk_32K)、
外围时钟(ipg_clk)
(2)对预分频寄存器进行设置(GPTx_PR)
-----------------------------------------------------------------------------------
(3)对GPT的工作模式进行设置(GPT_CR)同时启用GPT
工作模式分为2种Restart mode 和Free-Run mode
Restart mode
当计数器值达到比较值时重新开始计数 只和比较通道1相关,通道2和通道3不相关
Free-Run mod
计数器的值不会被重置计数器的值会一直走,直到0xffffffff 再加回到0x00000000
EN位 等于0 主计数器和预分频器被冻结 等于1 启用他们
ENMOD 等于1 主计数器和预分频器的值重置为0
ENMOD 等于0再启动(EN=1)计数器从冻结的值开始计数
硬件复位也可以重置计数器的值,但是GPT的输出比较寄存器除外(OCR1-3)
软件复位(SWR)也可以重置计数器的值,除下面寄存器的对应位(ENMOD EN STOPEN WAITEN DBGEN)
SWR=1在复位状态 -》复位完 -》自动变成SWR =0复位结束了
------------------------------------------------------------------------------------------
(4)读取当前计数器的值(GPTx_CNT)
------------------------------------------------------------------------------------------
(5)设置输入捕获通道(GPT1_CAPTURE1/GPT1_CAPTURE2),每个捕获通道有一个关联标志位
设置捕获引脚(GPTx_ICR),当发生电平转换的时候捕获寄存器从GPT_CNT里读值,并且中断标志被设置
(6)设置输出比较寄存器(GPT1_COMPARE1/COMPARE2/COMPARE3)