完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
非常好的Arduino与labview的直流电机转速控制文章,可以借鉴,非常清楚详细
基于Arduino与LabVIEW的直流电机转速控制系统(完整).pdf
(1.22 MB, 下载次数: 109
)
如程序代码2:转速测量程序 #include long counter_val[2] = {0,0}; //定义数组,用于存放外部中断计数值 byte CurCnt = 0; //定义当前计数器标志,用于判断当前正在计数的数组 int j=0; //定义定时器中断标志,用于判断是否发生中断 void setup() { delay(2000); Serial.begin(115200);//初始化波特率为115200 attachInterrupt(0, counter, RISING);//设置中断方式为上升沿 timer1.initialize(1000000); // 设置定时器中断时间,单位微秒,此处为1秒 Timer1.attachInterrupt( timerIsr ); // 打开定时器中断 interrupts(); //打开外部中断 } void loop() { long lTemp = 0; //定义临时存储数据变量 if(j==1) //判断是否发生定时器中断,即定时时间是否到达 { j=0; //清除定时器中断标志位 if((CurCnt&0x01) == 0) //当前使用的是偶数计数器,则上次频率值存放在第二个元素中 { lTemp = counter_val[1]; //读取数组第二个元素中的数值 counter_val[1]=0; //读完清除原来的数值,以便下次使用 } else //当前使用的是奇数计数器,则上次频率值存放在第一个元素中 { lTemp = counter_val[0]; //读取数组第二个元素中的数值 counter_val[0]=0; //读完清除原来的数值,以便下次使用 } Serial.print("S"); //发送帧头大写S Serial.print( lTemp); //发送频率数据,并回车换行 } } //外部中断处理函数 void counter() { //通过当前计数器来实现对外部中断计数值存储的切换 counter_val[CurCnt& 0x01] += 1; //发生一次中断则加1 } //定时器中断处理函数 void timerIsr() { j=1; //置位定时器中断标志位 CurCnt++; //当前计数器的值加1,实现另一个计数值切换 } |
|
|
相关推荐
|
|
国产芯片真的 “稳” 了?这家企业的 14nm 制程,已经悄悄渗透到这些行业…
784 浏览 2 评论
同是电流检测芯片FP137 与 INA139,实际性能差距有多大?
1222 浏览 0 评论
1989 浏览 0 评论
1426 浏览 1 评论
9308 浏览 2 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 01:55 , Processed in 1.106892 second(s), Total 101, Slave 79 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖