完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
提示:以下是本篇文章正文内容,下面案例可供参考
一、定时器功能配置? 1.定时器初始化函数time2_Init(void) void time2_Init(void) //定时器2初始化 { _stm2c0=0; //计数频率为8MHz/4=2MHz 即计数一次为0.5us _stm2c1=0b11000001; //定时器2功能选择寄存器,选择为定时/计数器模式 _stm2al=0x20; //初值为20000,计数时间为10ms _stm2ah=0x4e; _stm2ae=1; //STM2 比较器 A 匹配中断控制位使能 _st2on=1; //开启定时器 _mf4e=1; //多功能中断使能 _emi=1; //开启总中断 } 我们先来一句一句的分析代码,第一和第二条语句涉及到定时器部分两个最重要的寄存器。
2.中断函数配置DEFINE_ISR(time2,0x38) _emi=0; //关闭总中断 time2_count++; if(time2_count==100) { time2_count=0; LED1=!LED1; //LED1状态取反 } _stm2af=0; //清除定时器中断标志位 _emi=1; //开启总中断 time2_count这个变量我一开始在程序的开头定义了,并在头文件那里声明用extern声明为全局变量。进入一次中断time2_count就+1,10ms进入一次,到100就是1秒,然后再清零,LED1再取反。 二、主函数main 主函数没有什么东西,就是一些函数的初始化,和关闭看门狗而已 #include "HT66F2390.h" #include "delay.h" #include "uart.h" #include "LED.h" #include "time.h" void main() { int t=0; //用于计时 LED_Init(); //LED初始化 time2_Init(); //定时器2初始化 _wdtc=0b10101011; //关闭看门狗 while(1) { delay_ms(10); t++; if(t==100) { t=0; LED2=!LED2; //系统状态指示灯 } } } |
|
|
|
只有小组成员才能发言,加入小组>>
3278 浏览 9 评论
2956 浏览 16 评论
3458 浏览 1 评论
9000 浏览 16 评论
4051 浏览 18 评论
1110浏览 3评论
572浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
569浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2302浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1859浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 20:23 , Processed in 1.102508 second(s), Total 81, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号