[原创] 【Nucleo心得】+定时器

youki12345   2014-10-17 16:51 楼主
   定时器一直是很有用的部件,在我们的系统中必须用到定时器。
   在STM32L053 3个通用定时器  一个低功耗定时器  一个基本定时器,两个看门狗 systick 定时器

1.jpg

时钟分布与控制:因为官方没找到定时启动额例子所以决定自己用定时器来写为了更好地上手寄存器操作  所以先用GPIO口上手4个配置寄存器 GPIOx_MODR GPIOx_OTYPER GPIOx_OSPEEDR GPIOx_PUDDER 2个数据寄存器GPIOX_IDRGPIOX_ODR主要特点1)输出状态:推挽输出  开漏输出(上拉 / 下拉)2)输出数据:GPIOX_ODR  或则复用功能的输出3)每个IO口可以进行速度选择4)输入:浮空 (上拉 / 下拉),模拟输入5)输入到GPIOX_IDR或则到复用功能
2.jpg
模式选择
3.jpg
结构体它已经定义好了,这是自己写的寄存器版本IO口操作,过程也是比较艰辛的,刚开始写的GPIOA->MODER=0x33333333半天一点效果都没有,原来是自己的模式选错了,而且这里的灯也是GPIOA组的,连原先的效果都看不到了,还好自己一行一行代码屏蔽,看到底是哪出了问题,这不失业为一种调试的好方法。所有的GPIOA口都和灯是一样的效果了,用示波器检测过!!!!  可以用寄存器写,放在一个.h文件里,但是这个不具备报错功能,增加了开发难度!! 4.jpg
定时器TIM2122工作原理图  #include "mbed.h"Ticker timer;DigitalOut led1(LED1);void attime(){   led1=!led1;    }   int main()    {      timer.attach(&attime,0.5);// miao      while(1)      {          }        }   上面是找到的一个定时器用法的例子,它是用 Ticker 声明了一个变量,这个变量的用法就是通过一个Ticker类里的一个方法 一:timer.attach(&attime,0.5)     注册了一个定时器,第一个参数中断子函数的名字,第二个参数是定时的时间单位是s 我自己通过测试找到了这个定时器用的是tim22,关闭它的允许开关这个定时器就工作不了。



https://bbs.eeworld.com.cn/thread-471646-1-1.html 欢迎加入我的团队

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复