mirror of
https://github.com/Fishwaldo/bl_mcu_sdk.git
synced 2025-07-09 22:38:54 +00:00
[refactor][examples/timer] refactor timer demo
This commit is contained in:
parent
cbedd52d06
commit
45bad8b2f8
2 changed files with 22 additions and 68 deletions
|
@ -20,61 +20,26 @@
|
|||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hal_timer.h"
|
||||
#include "bflb_platform.h"
|
||||
#include "hal_timer.h"
|
||||
|
||||
volatile uint32_t cnt = 0;
|
||||
int main(void)
|
||||
{
|
||||
bflb_platform_init(0);
|
||||
|
||||
timer_user_cfg_t timer_user_cfg0;
|
||||
timer_user_cfg0.timeout_val = 1000 * 10; /* us */
|
||||
timer_user_cfg0.comp_it = TIMER_COMP0_IT;
|
||||
timer_register(TIMER1_INDEX, "timer1");
|
||||
|
||||
timer_user_cfg_t timer_user_cfg1;
|
||||
timer_user_cfg1.timeout_val = 1000 * 100; /* us */
|
||||
timer_user_cfg1.comp_it = TIMER_COMP1_IT;
|
||||
struct device *timer1 = device_find("timer1");
|
||||
|
||||
timer_user_cfg_t timer_user_cfg2;
|
||||
timer_user_cfg2.timeout_val = 1000 * 1000; /* us */
|
||||
timer_user_cfg2.comp_it = TIMER_COMP2_IT;
|
||||
|
||||
timer_register(TIMER_CH1_INDEX, "timer_ch1");
|
||||
|
||||
struct device *timer_ch1 = device_find("timer_ch1");
|
||||
|
||||
if (timer_ch1) {
|
||||
device_open(timer_ch1, DEVICE_OFLAG_POLL);
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg0));
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg1));
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg2));
|
||||
if (timer1) {
|
||||
device_open(timer1, DEVICE_OFLAG_STREAM_TX); // 1s timing
|
||||
} else {
|
||||
MSG("timer device open failed! \n");
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if (SET == device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP2)) {
|
||||
MSG("Comparator 2 match, timer reload\n");
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg0));
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg1));
|
||||
device_control(timer_ch1, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg2));
|
||||
MSG("Counter value=%d,M0=%d, M1=%d,M2=%d \n", device_control(timer_ch1, DEVICE_CTRL_GET_CONFIG, NULL),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP0),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP1),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP2));
|
||||
break;
|
||||
if (device_control(timer1, DEVICE_CTRL_GET_INT, (void *)TIMER_COMP0_IT)) {
|
||||
BL_CASE_SUCCESS;
|
||||
}
|
||||
|
||||
MSG("Counter value=%d,M0=%d, M1=%d,M2=%d \n", device_control(timer_ch1, DEVICE_CTRL_GET_CONFIG, NULL),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP0),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP1),
|
||||
device_control(timer_ch1, DEVICE_CTRL_GET_MATCH_STATUS, (void *)TIMER_EVENT_COMP2));
|
||||
}
|
||||
|
||||
BL_CASE_SUCCESS;
|
||||
while (1) {
|
||||
bflb_platform_delay_ms(100);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,25 +20,24 @@
|
|||
* under the License.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "hal_timer.h"
|
||||
#include "bflb_platform.h"
|
||||
#include "hal_timer.h"
|
||||
|
||||
struct device *timer_ch0;
|
||||
struct device *timer0;
|
||||
|
||||
volatile uint32_t cnt = 0;
|
||||
|
||||
void timer_ch0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state)
|
||||
void timer0_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state)
|
||||
{
|
||||
MSG("timer ch0 interrupt! \n");
|
||||
|
||||
if (state == TIMER_EVENT_COMP0) {
|
||||
cnt++;
|
||||
MSG("timer event comp0! cnt=%d\n", cnt);
|
||||
MSG("timer event comp0! \r\n");
|
||||
} else if (state == TIMER_EVENT_COMP1) {
|
||||
MSG("timer event comp1! \n");
|
||||
MSG("timer event comp1! \r\n");
|
||||
} else if (state == TIMER_EVENT_COMP2) {
|
||||
MSG("timer event comp2! \n");
|
||||
BL_CASE_SUCCESS;
|
||||
timer_timeout_cfg_t cfg = { 2, 12000000 }; /*modify compare id 2 timeout 12s*/
|
||||
device_write(dev, 0, &cfg, sizeof(timer_timeout_cfg_t));
|
||||
MSG("timer event comp2! \r\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,28 +45,18 @@ int main(void)
|
|||
{
|
||||
bflb_platform_init(0);
|
||||
|
||||
timer_user_cfg_t timer_user_cfg;
|
||||
timer_user_cfg.timeout_val = 1000 * 1000; /* us */
|
||||
timer_user_cfg.comp_it = TIMER_COMP0_IT;
|
||||
timer_register(TIMER0_INDEX, "timer0");
|
||||
|
||||
timer_register(TIMER_CH0_INDEX, "timer_ch0");
|
||||
timer0 = device_find("timer0");
|
||||
|
||||
timer_ch0 = device_find("timer_ch0");
|
||||
|
||||
if (timer_ch0) {
|
||||
device_open(timer_ch0, DEVICE_OFLAG_INT);
|
||||
device_set_callback(timer_ch0, timer_ch0_irq_callback);
|
||||
device_control(timer_ch0, DEVICE_CTRL_SET_INT, NULL);
|
||||
device_control(timer_ch0, DEVICE_CTRL_TIMER_CH_START, (void *)(&timer_user_cfg));
|
||||
if (timer0) {
|
||||
device_open(timer0, DEVICE_OFLAG_INT_TX); /* 1s,2s,3s timing*/
|
||||
device_set_callback(timer0, timer0_irq_callback);
|
||||
device_control(timer0, DEVICE_CTRL_SET_INT, (void *)(TIMER_COMP0_IT | TIMER_COMP1_IT | TIMER_COMP2_IT));
|
||||
} else {
|
||||
MSG("timer device open failed! \n");
|
||||
}
|
||||
|
||||
while (1) {
|
||||
if (cnt == 10) {
|
||||
device_control(timer_ch0, DEVICE_CTRL_TIMER_CH_STOP, (void *)(&timer_user_cfg));
|
||||
MSG("timer test over! \n");
|
||||
BL_CASE_SUCCESS;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue