采用飞思卡尔Freedom开发平台的触摸界面(2)
时钟超出范围
本文引用地址://www.cazqn.com/article/142532.htm到现在为止,我们已经从接口谈到了TSI模块、PORT模块和GPIO模块。因此,我们还没准备好开始设置滑块吗?是的,因为我们还有一个更加重要的细节需要考虑。作为低功耗的片上系统(SoC)部件,Kinetis MCU可以通过关闭未使用的片上外设来降低功耗。这个关闭步骤其中就涉及到切断所提及外设的时钟信号。恢复闲置外设的状态需要重新启用这个信号。时钟信号和其他MCU系统配置其他方面的控制都通过系统集成模块(SIM)的18个寄存器加以处理。在默认状态下,当MCU上电时,大多数外设时钟信号都被禁用。此外的关键要点在于,如果我们没有启用GPIO模块的时钟信号,我们在尝试利用它们时会毫无进展。注意一些开发工具运行时初始化密码会自动启用所有外设时钟。然而,CodeWarrior工具不会这样,因此你必须自己管理这个功能。
仔细阅读参考手册中的系统集成模块(SIM)一章,可以很容易找到系统时钟门控寄存器,然后确定哪一个寄存器管理TSI和GPIO模块。结果如下,第5个时钟门控寄存器(SIM_SCGC5)处理这两种外设。这个寄存器位的位置和功能如图4所示。注意关于TSI和低功耗定时器模块,这个寄存器控制的位访问的是模块,而不是时钟信号。但是,结果与禁用时钟信号一样:如果你无法访问部件,然后你便不能使用它。
因此,如要设置TSI模块和RGB LED以便使用,必须采取以下步骤:
1. 在SIM_SCGC5的恰当位中写入1,启用端口B和端口D模块的时钟信号。(端口D模块,如图1所示,处理RGB LED的蓝色部件。)同时将相应的位中写入1,启用TSI模块的位。
2. 将配置位写入端口B引脚控制寄存器PORTB_PCR16和PORTB_PCR17,选择模拟信号类型,并将引脚16和17与TSI模块通道9和通道10耦合在一起。将配置位写入到PORTB_PCR18、PORTB_PCR19和PORTD_PCR1寄存器,将它们定义为数字信号,然后将这些引脚与LED线路耦合在一起。
3. 关于LED,将1写入GPIOB_PDDR和GPIOD_PDDR的位,并将这些引脚设置为输出。然后将1写入GPIOx_PSOR寄存器适合的位,从面将LED切断。或者,将1写入GPIOx_PCOR寄存器相同的位,从而将它打开。(LED为低位激活。)关于模拟电极信号,只需让TSI处理它们即可。
评论