[活动专区]

基于赛元8003学习评估开发板开发心得(一)TIMER0

[复制链接]
939|1
手机看帖
扫描二维码
随时随地手机跟帖
lisingch|  楼主 | 2019-5-22 16:44 | 显示全部楼层 |阅读模式
本帖最后由 lisingch 于 2019-5-22 16:51 编辑

      这次收到的赛元微电子的8003学习评估开发板,外观较上次的学习小板有了较大变化,学习板采用亚黑设计,小巧精致,并且配备了排针方便用户。板子上已将核心微控制器SC92F8003的20个引脚全部引出,并另外引出了调试端口。下面贴几张图做个纪念。1、焊接排针:
微信图片_20190512194859.jpg
微信图片_20190512194907.jpg
微信图片_20190512194851.jpg
微信图片_20190512194855.jpg

2、安个家
微信图片_20190512194902.jpg
微信图片_20190512194918.jpg
微信图片_20190512194914.jpg
微信图片_20190512194839.jpg

      本次实验时钟采用内部高精度 HRC 16MHz,TIMER0工作在方式1,采用中断方式在P1.2输出1ms计时信号,同时利用P1.3上输出200ms计时信号,控制LED亮、灭。下面是具体的实验过程。
一、实验资源
1、赛元8003学习评估开发板;
2、赛元SC_LINK;
3、逻辑分析仪;
4、Keil V9.59;
5、SOC_KEIL;
6、赛元官方提供的例程;
7、SC92F8003固件库使用手册等相关文档;

二、功能实现
1、SC92F8003微控制器简介
      SC92F8003微控制器采用TSSOP20封装,虽然身材小但内部资源非常丰富:是一颗增强型的 1T 8051 内核工业级Flash微控制器,指令系统完全兼容传统8051产品系列。 SC92F8003 集成有 16  Kbytes  Flash ROM、512 bytes SRAM、128 bytes EEPROM、最多 18个 GP I/O、16 个 IO 可外部中断、3 个 16 位定时器、8 路 12 位高精度 ADC、7 路 10 位 PWM、内部 1%高精度高频16/8/4/1.33MHz振荡器和± 4%精度低频128kHz振荡器、UART、SSI 通信接口等资源。为提高可靠性及简化客户电路,SC92F8003 内部也集成有 4 级可选电压 LVR、2.4V 基准 ADC 参考电压、WDT 等高可靠电路。SC92F8003 具有非常优异的抗干扰性能,非常适合应用于各种物联网控制、大小智能家电和智能家居、充电器、电源、航模、对讲机、无线通讯、游戏机等工业控制和消费应用领域。
Image 006.png

2、定时器资源
      SC92F8003微控制器包含三个定时器TIMER0、TIMER1及TIMER2,每个定时器还有不同的工作方式。本次使用的即是定时器TIMER0的工作方式1。
Image 001.png
下面是主要的代码片段:void TIMER0_Config(void)
{
        TIM0_TimeBaseInit(TIM0_PRESSEL_FSYS_D1,   //TIMER0计数源来自系统时钟16MHz
                                    TIM0_MODE_TIMER);           //TIMER0做定时器
        TIM0_WorkMode1Config(65536-16000);             //设置Timer0为工作模式1,
                                                                              //初值为(65536-16000),定时1ms
        TIM0_ITConfig(ENABLE,HIGH);                         //使能Timer0中断
        TIM0_Cmd(ENABLE);                                       //使能Timer0定时器
}


void GPIO_Config(void)
{
        GPIO_Init(GPIO1, GPIO_PIN_2|GPIO_PIN_3, GPIO_MODE_OUT_PP);   //P12、P13为强推输出模式
}


void main(void)
{            
        GPIO_Config();
        TIMER0_Config();
        enableInterrupts();//使能全局中断
        while(1)
        {
        }
}

还有TIMER0的中断服务函数:
void Timer0Interrupt()interrupt 1
{
        TIM0_WorkMode1Config(65536-16000);//重载定时器初始值
        P12 = ~P12;
        flag++;
        if(flag==200)
        {
                flag=0;
                P13 = ~P13;
        }
}

      这些代码是不是很简单?的确是简单,这不仅仅是因为实现的功能少,而是因为采用了赛元微电子提供的库函数,用库基本上不用看手册了,非常方便。

3、实验结果
代码烧录前要设置一下,选用内部时钟1分频;
Image 002.png
Image 003.png
Image 004.png

三、实验总结
      利用库函数相对开发应用比较方便,通过本次实验感觉内部高速时钟的精度不错。

      另外,在这次“触控从未如此有趣”活动中,共申请了6件产品,除8003学习评估开发板之外,还包括一块“LB1014隔空水位检测评估板”;“LB1010-弹簧按键、LB1011-隔空3MM;LB1012-PAD按键、LB1013-插件胶圈等四块触控评估开发板”。并同时分享了部分开发心得,有兴趣的朋友可以共同学习交流。
分享地址如下:
基于赛元LB1014的隔空水位检测开发心得(一)调试 - - 中国电子网技术论坛  https://bbs.21ic.com/icview-2813430-1-1.html
基于赛元LB1014的隔空水位检测开发心得(二)改进咖啡机 - - 中国电子网技术论坛  https://bbs.21ic.com/icview-2813908-1-1.html
基于赛元LB101X 触控评估板开发心得(一)测试 - - 中国电子网技术论坛  https://bbs.21ic.com/icview-2814676-1-1.html
基于赛元LB101X 触控评估板开发心得(二)按键控制PWM - - 中国电子网技术论坛  https://bbs.21ic.com/icview-2814784-1-1.html


注:微信名“lising”




使用特权

评论回复

相关帖子

赛元MCU3| | 2019-5-22 18:11 | 显示全部楼层
特别棒

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

14978

帖子

17

粉丝