物联网|矩阵键盘|定时器与计数器基础开发|物联网之蓝牙4.0 BLE基础-学习笔记(5)

9 矩阵键盘

初始化时为11111110 即0xfe(从高位开始算):
在这里插入图片描述

当S1被按下是,变成了0xee:在这里插入图片描述

经过一段时间检测,如果还是0xee,则代表按键按下,同理可以得到其他按键的状态。

例如:当2被按下时:在这里插入图片描述

在这里插入图片描述

10 定时器与计数器基础开发

1s亮灭一次,亮0.5s,灭0.5s。
LED电路原理图:
在这里插入图片描述

T1CTL设置:在这里插入图片描述
在这里插入图片描述
标记频率/128,自由运行从0x0000至0xffff。在这里插入图片描述
在这里插入图片描述

系统默认时钟是2分频,即32MHZ/2=16MHZ,标记频率/128,即16M/128=0.125M(定时器频率)
1/.125M=8us,每次8us,自由运行0XFFFF=65535,65535*8=524280us=524.28ms,大约是0.5s。

T1STAT设置:在这里插入图片描述

选择0通道:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例代码:

#include <ioCC2540.h>
typedef unsigned char uchar;
typedef unsigned int uint;
#define LED1 P1_0
void ledinit(void)
{
  P1DIR |= 0x01; //00000001
  LED1 = 0;
}
void T1init(void)
{
  T1CTL = 0x0d;//128分频,自由运行从0x0000至0xffff
  T1STAT = 0x21;//0010 0001 溢出复位Timer 1 counter-overflow interrupt flag选择0通道

}
/***************************
//主函数
***************************/
void main(void)
{
  uchar count = 0;
  ledinit();
  T1init();
  while(1)
  {
    if(IRCON > 0) //有中断进入
    {
      IRCON = 0; //清除中断(必要)
      if(count++ >=1) //记录1s
      {
        count = 0; //清除计数
        LED1=~LED1;
      }
    }
  }

}

参数设置总结:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Medlar_CN/article/details/130624832