(续接上篇)
3. GPIO外设
IOMUXC:引脚复用功能 + 引脚电气属性



Linux编译:
- arm-linux-gnueabihf-gcc -g -c led.S -o led.o
- arm-linux-gnueabihf-ld -Ttext 0x87800000 led.o -oled.elf
- arm-linux-gnueabihf-objcopy -O binary -S -g led.elf led.bin
- arm-linux-gnueabihf-objdump -D led.elf > led.dis
Makefile编译:
- 目标:目标文件 led.bin
- 依赖:依赖源文件 led.S
- 规则:源文件到生成目标文件中间的规则
4. 时钟与定时器
定时器 (EPIT GPT):是一个通过对已知频率的时钟信号进行计数,来实现定时、延时或事件计数功能的硬件模块或软件机制。
时钟(clock):在电子系统中是一个产生稳定、周期性振荡信号的电路或组件。这个信号像节拍器或心跳一样,为数字电路中的各种操作提供同步时序基准。
实时时钟(RTC real time clock): 是微处理器中的一个功能模块,用于在系统主电源关闭的情况下,继续提供精确的日历和时间信息。
4.1 时钟
4.1.1 硬件概念
时钟源:晶体整荡器
工作做原理:利用石英晶体的压电效应和固有谐振频率,来产生高度稳定的电信号。
PLL(phase locked loop)锁相环电路: 倍频
Prescale 分频器: 分频
PFD(phase fractional Prescale)相位分数分频器: 输出频率可升可降
4.1.2 代码编写
4.1.2.1 kernal
CCM_ANALOG_PLL_ARMn
- 先选择osc_clk,让step_clk为24MHz
- 再将PLL1的输出改成step_clk,让ARM暂时工作在24MHz;
- 配置PLL为1056,注意设置倍频因子之前先把PLL之后的二分频设置好,避免ARM内核故障!!
- 最后改回pll1_main_clk
4.1.2.2 528 PLL
CCM_ANALOG_PFD_528n
4.1.2.3 480 PLL
CCM_ANALOG_PFD_480n
4.1.2.4 AHB_CLK_ROOT(132M)
CBCMR[PRE_PERIPH_CLK_SEL]
CBCDR[PERIPH_CLK_SEL]
CBCDR[AHB_PODF]
4.1.2.5 IPG_CLK_ROOT(66M)
CBCDR[IPG_PODF]
4.1.2.6 PERCLK_CLK_ROOT(66M)
CSCMR1[PERCLK_CLK_SEL]
CSCMR1[PERCLK_PODF]
4.2 定时器
4.2.1 EPIT
Enhanced Periodic Interrupt Timer:增强型周期中断定时器
1s中断,中断服务函数中反转led灯
频率计算时1000*1000=1MHz
存储计算时1024*1024=1MByte
4.2.2 GPT
General Purpose Timer:通用目的定时器
输入捕获和比较输出
利用自由运行模式编写精准延时函数