本帖最后由 芯圣电子官方QQ 于 2023-7-20 11:14 编辑
芯圣的板子收到好久了,今天抽点空分享点东西给大家,共同进步
一直以来,我就不喜欢螺奔,何况官方的库看了下还是不错的,结合官方的例子,很快就可以上手。
哪么问题来了,如何才能简单直观的写程序? 上个操作系统吧, 上个简单点的。
首先我要个定时器,每1ms中断一次,这在任务调度中可有用了,代码麻不用自己写,官方的贴一个。
- /************************************************************************************
- * 模块性能介绍
- * 1、HC89F003的定时器0,1共有四种工作方式
- * 方式0:16位自动重装定时器/计数器
- * 方式1:16位定时器/计数器
- * 方式2:8位自动重装定时器/计数器
- * 方式3:T0分成两个(TL0/TH0)独立的8位定时器/计数器(T1无此模式)
- * ************************************************************************************
- * 应用注意事项
- * 1、方式3时T0占用T1的TR1、TF1及中断源,由于TR1被T0占用,此时需要关闭T1可将T1设为工作
- * 方式3
- * 2、在方式0(Mode0)时THx(x = 0,1)和TLx(x = 0,1)读写操作遵循先高位后低位。并且在修改
- * 重载数据时,低位无论有无改变,只要高位被修改,低位都必须再写入一次,方式 1、2、3
- * 时无此要求
- * ************************************************************************************/
- void Time_Init(void)
- {
- TIM0_Init(TIM0_CLK_12,TIM0_SOFT_CONTROL,TIM0_INTIMING,TIM0_16BIT_AUTO_CNT_TIMING);
- //时钟12分频,只需软件置TRx即可启动Tx,Tx用于内部定时,16位重装载定时器/计数器
- //Tim0计算时间 = (65536 - 0xFACB) * (1 / (Fosc /Timer分频系数))
- // = 1333 / (16000000 / 12)
- // = 1 ms
- //定时1ms
- //反推初值 = 65536 - ((1/1000) / (1/(Fosc / Timer分频系数)))
- // = 65536 - ((1/1000) / (1/(16000000 / 12)))
- // = 65536 - 1333
- // = 0xFACB
- TIM0_TimerCnt(0xFACB); //T0定时时间1ms
- TIM0_ITCmd(ENABLE); //T0中断使能
- TIM0_Cmd(ENABLE); //T0使能
- EA_Enable(); //使能总中断
- }
|