姓名 | 学号 | 班级 | 电话 | 邮箱 |
---|---|---|---|---|
欧欣祺 | 15352267 | 15M2 | 13160874158 | 934039318@qq.com |
1、实验题目
Interrupts and the Timer
2、实验内容
在板子上跑程序:
仿真完成后把相应端口PA3,4,5换成PF1,2,3.重新对端口初始化设置。先设置每1s Time定时中断并PF2切换亮灭,改变定时初值观察结果。再对系统定时器中断时间重新设定为10ms,在其中断服务程序中对PF3切换状态.
3、实验过程及结果
程序修改前

(1)初始化PLL
其输出频率为50MHz。

(2)初始化系统定时器中断
系统定时器控制PA4。优先级为2。


(3)初始化时钟中断
时钟中断(Timer)控制PA3的变化,优先级为3。


(4)主程序
可以看到,主程序中通过一个循环,不断改变PA5的值。

分析
可以看到系统定时器中断的优先级>时钟中断的优先级>主程序,因此当主程序运行的时候,发生时钟中断,主程序被阻塞,接着又出现了系统定时器中断,此时时钟中断程序也阻塞,直至系统定时器中断程序结束,时钟中断程序继续运行至结束,接着主程序才接着运行。
修改优先级
将时钟中断的优先级改为1,此时 时钟中断的优先级>系统定时器中断的优先级>主程序

因此得到下面的结果,可以看到当主程序运行的时候,发生系统定时器中断,主程序被阻塞,接着又出现了时钟中断程序中断,此时系统定时器中断程序也阻塞,直至时钟中断程序结束,系统定时器中断程序继续运行至结束,接着主程序才接着运行。

修改端口
- 修改基地址

-
初始化PF1-3
image.png
-
0.2s变化相当于时钟的频率为5HZ, 5HZ=50MHZ/(199+1)/50000,因此传入的参数为50000.


蓝灯以较快的速度闪烁,估计就是0.2S了。
- 0.01s变化相当于时钟的频率为100HZ, 100HZ=50MHZ/500000,因此传入的参数为500000.


-
因为在counts中进行了延时,所以绿灯闪烁变慢了,这样才能观察到它在闪烁。
IMG_5787.JPG
网友评论