接上一次记录
第一步:初始化时钟里边GPIO的时钟。
GpioMuxRegs.------负责初始化时,选择gpio口的功能(通用、复用)
第一种:通用(一共至少配置4个)
gpio的数据寄存器都可以用--dat/(set/clear/toggle/----选一个设定)pud/dir
如果是输入时,加上输入限定--CTRL/---SEL这两个
第二种:复用(一共至少配置3个)
pud,dir
如果涉及到输入功能--加上输入限定--CTRL/---SEL这两个
以上这些都是GPIO的初始化,设定初始的时候,GPIO的功能是什么样的。
实际用到这些gpio变换的时候在主函数中修改。
CPU定时器
第一个:用户能用哪一个定时器:2812---定时器0,28335定时器0和1;
主要思想:将定时器中的数值装载到计数器(PRDH:PRD---->TIMH:TIM)-----计多少个数(PRDH:PRD+1)个数 PRDH:PRD----在PRD寄存器中
系统时钟150M----分频-->(TDDRH:TDDR--->PSCH:PSC)就是说我原来1s跳150M次,现在分频以后1s跳150M/(TDDRH:TDDR+1)次。----现在我每次跳多久知道了,我开始计数(PRDH:PRD),计多少数就是多长时间。 TDDRH:TDDR--->PSCH:PSC-----在TPRH和TPR寄存器中
(PRDH:PRD+1)*(TDDRH:TDDR+1)/150M=时间
InitCpuTimers();以上两方面在这个里边初始化好了。
在初始化定时器中需要关闭定时器TSS=1
然后定时器的配置中也需要关闭定时器TSS=1;
以上都配置完了,TSS=0。
到目前为止,定时器基本配置完全。
InitCpuTimers();
ConfigCpuTimer(&CpuTimer0, 80, 50);//45.045045045
目前知道的是,定时器每1/250k进去一次,具体干啥了还不知道。
接下来学习中断,了解定时器具体怎么用,上边讲的告诉你定时器的基本配置。先配好才能用。
DSP中断系统
有三级中断系统,CPU,PIE,外设级
CPU级中断:第一软件触发
第二,硬件触发
CPU级中断向量---存的中断的入口地址
CPU级---IER(16位)/IFR(16位)刚好一一对应。
有中断请求,IFR自动置1,CPU查看对应的IER是否满足使能,满足则响应。
IER = 0x0000;
IFR = 0x0000;刚开始全部清0.
PIE中断---这个告诉你这个表对应的中断是哪一个。只是看看用的。
进入CPU级INT1有8个pie级的中断 1的优先级高于2
PIE中断寄存器----这个是真正程序写的时候用的
InitPieCtrl();//初始化PIE控制寄存器,使能全部关闭,标志位清0。模块也不使能----pie使能关闭
InitPieVectTable();//初始化地址----PIE模块使能,就是告诉你如果产生中断,中断函数从这个地址进去。把每个中断函数地址都分配好。你是什么中断进对应的中断地址。
外设级中断
外设中断启动时候先手动清除中断标志位。
中断函数也要有外设中断标志位清除。
main函数编写中断。
1关闭全局中断 DINT=0
2关闭CPU级中断使能和标志位IER=0;IFR=0;
3关闭PIE级中断使能和标志位 InitPieCtrl();
4初始化PIE级中断向量的地址,使能PIE级模块InitPieVectTable();
以上相当于初始化
5配置外设的中断选择端口(外设初始化,开启时钟---相当于使能外设了)
6将外设对应的函数==中断向量表
7打开PIE级对应的中断使能
8打开CPU级中断 使能
9全局中断 使能