IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 恒烁M0+系列CX32L003单片机定时器控制LED亮灭 -> 正文阅读

[嵌入式]恒烁M0+系列CX32L003单片机定时器控制LED亮灭

定时器是单片机最重要的一个模块,有了定时器就可以做任何需要的功能。

本例采用通用定时器2来实现基本的定时功能——控制灯的亮灭,时间间隔设置成1S。

定时器需要设置2部分:初始化定时器、中断优先级。需要注意的是设置定时器时需要在开始使能其时钟(对于任何一个模块这一步都是必须的)。

编写定时器初始化时 按照定时器逐个看是否是相关的功能操作位即可,如果不相关,比如我们是用的定时器基本功能,而定时器捕获/比较什么的功能就是无关的,遇到这些寄存器位直接跳过即可,这种方法对于熟悉定时器会相当有帮助。

void Tim2_Init(unsigned int psc,unsigned int period)
{
  RCC->PCLKEN|=(1<<11); //定时器2时钟开启

  TIM2->CR1&=~(3<<8);//时钟不分频
  TIM2->CR1|=1<<7;//自动重装载
  TIM2->CR1&=~(3<<5);//边沿对齐模式
  TIM2->CR1&=~(1<<4);//向上计数
  TIM2->CR1|=(1<<2);//
  TIM2->PSC=psc;//分频系数
  TIM2->ARR=period;//周期
  NVIC->ISER[0]|=1<<19;//使能中断
  NVIC->IP[4]|=2<<30;//设置中断优先级

  TIM2->CNT=0;
  TIM2->CR1|=1<<0;//使能定时器
  TIM2->DIER|=1<<0;//允许更新中断
}

LED的初始化,这一步在之前的例子已经写过了

void LED_Init()
{
  RCC->HCLKEN|=(1<<0); //GPIOA时钟开启
  GPIOA->DIRCR|=1<<3; //PA3输出
  GPIOA->OTYPER&=~(1<<3); //PA3开漏输出
  GPIOA->SLEWCR&=~(1<<3); //PA3高电压转换速率
  GPIOA->DRVCR&=~(1<<3); //PA3高驱动强度
  GPIOA->ODR&=~(1<<3); //PA3输出低电平

}

中断函数编写。

在这例中,我们定时1s,假如单片机工作时钟为24M,将其设置成24分频,周期设置成0.1s(100ms)。此时不够1s,我们在中断函数中再累计10次即可。定时公式为:time=((1/(24000000/分频系数))*周期*(中断累计计数)

void TIM2_IRQHandler()
{
  if(TIM2->SR&(1<<0))
  {
   count++;
    if(count>10)
    {
      if(led_status==0)
      {
        led_status=1;
      }
      else
      {
        led_status=0;
      }
      count=0;
    }
   TIM2->SR&=~(1<<0);
   TIM2->CNT=0;
  }
}

状态位的变化是在定时器中更改的,主函数根据状态位的改变来改变LED灯的状态

int main()
{
  LED_Init();
  Tim2_Init(23,10000);

  while(1)
  {
    if(led_status)
    {
      GPIOA->ODR|=(1<<3);
    }
    else
    {
      GPIOA->ODR&=~(1<<3);
    }


  }
  return 0;
}

?CX32L003最小系统开发板图片来自《嵌入式软硬件爱好者》

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-09 11:56:09  更:2021-09-09 11:58:07 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 8:35:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计