PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 让两颗LED用不同的频率闪烁
楼主:
zzss2003
(brotherD)
2017-08-04 11:33:24
开发平台(Platform):C language in embedded system
问题(Question):想让两颗LED用不同的频率闪烁
程式码(Code):
void task1(void)
{
J11: LED1 ON
J12: Delay 1s
J13: LED1 OFF
J14: Delay 1s
}
void task2(void)
{
J21: LED2 ON
J22: Delay 2s
J23: LED2 OFF
J24: Delay 2s
}
补充说明(Supplement):目前的想法是想用中断达到此功能,先执行J11,中断触发执行
J21,中断执行完毕再回去执行J12,中断又触发在执行J22....以此类推。看似很简单的功
能,但要写程式时却不知道如何下手。
问题1: 第一个中断触发后,要怎么样让中断副程式进入task2这个function?
问题2: 进入task2这个function后,如何让中断副程式"只"做一行后就结束?
问题3: 第二个中断触发后,如何让第二个中断从第一个中断结束的地方继续做?
问题4: 如3,第二个中断结束后,要如何返回J12,而不是重新从J11开始执行?
问题5: 这些功能是不是可以只靠"中断+if else"就达到?最多再多一个timer
问题6: 我该如何思考问题?虽然我现在有办法把问题列出来(并不完全),但最重要的是,
我要如何"思考"这些问题?
谢谢各位前辈的指点与指教,小弟感激不尽。
作者:
Killercat
(杀人猫™)
2017-08-04 11:38:00
我虽然不知道你是拿啥语言实作这个,不过组语的做法是存现在位置进reg, 跳过去,然后读现在位置+1跳回来可以参考C的setjmp()跟longjmp() 分别对应我刚说的功能抱歉 不是存位置近reg 是存进heap XD没heap就进reg 缺点就是少了一个reg 很不方便 (?不过setjmp本身不知道做得到做不到存reg
作者:
MOONY135
(谈无欲)
2017-08-04 12:26:00
两个timer不就好了吗
作者:
JFLung9536
(立月小蛇)
2017-08-04 12:47:00
是在mcu上写吗
作者:
james732
(好人超)
2017-08-04 12:58:00
http://ideone.com/MqC0z5
大概是这种感觉如果不能加counter的话就要想一下
作者:
descent
(“雄辩是银,沉默是金”)
2017-08-04 13:05:00
while(1){task1();task2()} 不就有你要的效果了。
作者:
james732
(好人超)
2017-08-04 13:38:00
为什么一定要做成两个task?
作者:
MOONY135
(谈无欲)
2017-08-04 14:25:00
一个TIMER控一个灯阿
作者:
kwpn
(ITSST)
2017-08-04 21:13:00
用coroutine
作者:
Lipraxde
(Lipraxde)
2017-08-04 21:39:00
你看看有没有PWM周边阿,有的话就用PWM做啊~
作者: cs8425 (cs)
2017-08-07 20:54:00
自推一下很久之前的RGB LED函式库:
https://goo.gl/9fUhMj
继续阅读
[问题] 外部变量static问题
Tverous
Re: [公告] 板工请假七天
wtchen
[问题] 二维阵列型别
oToToT
[问题] __attribute__ ((aligned (8)));
SKTP
[问题] 所有c++程式突然都不能跑
a88241050
[问题] 新手问题 传入阵列的size
nova06091
Re: [分享] CMake里面直上Google Test
druid0214
[问题] online judge 上一题如何加速运算?
ddchris
[公告] 板工请假七天
wtchen
[分享] CMake里面直上Google Test
Killercat
Links
booklink
Contact Us: admin [ a t ] ucptt.com