【Nucleo-F413ZH创想】 实验六 时钟中断产生脉冲和产生计数
本次实验的重点是由单片机内时钟定时器产生中断,在中断函数中完成设计需要。输出脉冲可以有许多方法,最简单的就是利用时间函数控制1个GPIO口的高低电平的时间就可以了,本例就是用这种方法。完成定时需要用到ARM中的定时器,打开Ticker.h文档,看实例需要定义一个时钟对象类,一个时钟函数,一个绑定此函数和对象的方法[完成中断]。
在定义对象类区域增加1个数字输出IO:
DigitalOut plusA5(PA_5);//Plus 输出为PA_5
接在上边一行后增加:
Ticker tick;//定义时间对象,名称为tick
在main主函数前边,增加一行写tick中断执行函数:
void tipInt(void){plusA5 =!plusA5;}
定义的PA_5输出一次高,一次低,不就是方波脉冲吗。
再在main循环语句前边增加:
tick.attach(&tipInt,0.005f);
此语句将tick对象绑定到中断函数tipInt上,定时为0.005秒,算下来plus27的频率就是100Hz了,因为是中断,所以主循环程序中没有任何语句,我们在P0_27口接1个LED观察[由于速度太快,LED一直亮],再用示波器看就可以了,下载运行,结果见图61,图62。
稍稍扩展一下思路,如果想让程序计数器随此时钟增加应该如何改程序?实在不明白,网上提出讨论。
|