App_easy_timer不在user_app_on_init上工作
DA14530和DA14531
3个月前
App_easy_timer不在user_app_on_init上工作
发布的gustavo.laureano65点 5回复你好,
我遵循以下指南:
http://lpccs-docs.dialog-semiconductor.com/Tutorial_SDK6/adv_data.html
为了使广告数据动态,但由于某些原因,当从user_app_on_init调用时定时器不会启动,但当从其他地方调用时(如on_disconnect)会工作。
在app_on_init内部调用的函数(用断点检查),它没有落入“return EASY_TIMER_INVALID_TIMER”(也用断点检查)
知道为什么计时器不从init开始吗?
谢谢
致以最亲切的问候
Gustavo
3个月前
嗨PM_Dialog
谢谢,当我从adv_start用户回调开始时,它工作,我所做的唯一改变是总是取消任何以前的计时器,否则它会生成多个计时器实例并行运行:
Void user_app_adv_start(Void) {app_easy_timer_cancel(app_adv_data_update_timer_used);app_adv_data_update_timer_used = app_easy_timer(APP_ADV_DATA_UPDATE_TO, adv_data_update_timer_cb);//一秒一次定时器app_easy_gap_undirected_advertise_start();}
但是你知道为什么定时器不能从app_init回调开始吗?
我搜索了文档,没有明确的原因为什么它不能工作。
还有一个(不相关的)问题:
我有问题使用UART RX中断当使用UART DA14531 ROM代码(# undef CFG_UART1_SDK),它从未调用注册回调,只能当我设置为使用SDK UART实现(# define CFG_UART1_SDK),但是我发现没有信息说明为什么ROM代码不工作,这是一个错误的ROM代码吗?或者在处理中断时,我总是需要使用编译的驱动程序?
谢谢!
Gustavo
3个月前
以下是相关部分:
外围初始化在user_peripher_setup .c上
静态常量uart_cfg_t uart_cfg = {.baud_rate = UART_BAUDRATE_115200 .data_bits = UART_DATABITS_8 .parity = UART_PARITY_NONE .stop_bits = UART_STOPBITS_1 .auto_flow_control = UART_AFCE_DIS .use_fifo = UART_FIFO_DIS .tx_fifo_tr_lvl = UART_TX_FIFO_LEVEL_0 .rx_fifo_tr_lvl = UART_RX_FIFO_LEVEL_0 .intr_priority = 2,};void环线init(void){//在Boost模式下使DCDC转换器为使用的gpio提供VBAT_HIGH (syscntl_dcdc_turn_on_in_boost(SYSCNTL_DCDC_LEVEL_3V0);// ROM补丁patch_func;//初始化外围设备uart_initialize(UART1, &uart_cfg);GPIO_ConfigurePin(UARTx_TX_GPIO_PORT, UARTx_TX_GPIO_PIN, OUTPUT, PID_UART1_TX, false);GPIO_ConfigurePin(UARTx_RX_GPIO_PORT, UARTx_RX_GPIO_PIN, INPUT, PID_UART1_RX, false);//启用pads GPIO_set_pad_latch_en(true);}
我的user.c上的代码:
static void uart_read_cb(uint16_t length){//将接收到的字节推入ring-buffer ringbuffer_add(&ringbuffer_inst_rx, &rxbuf_cb);//开始下一个异步读1个字符。uart_receive(UART1, &rxbuf_cb, 1, UART_OP_INTR);} void user_app_on_init(void) {ringbuffer_init(&ringbuffer_inst_rx, ringbufer_buffer_rx, sizeof(uint8_t), 64);uart_register_rx_cb (UART1 uart_read_cb);uart_receive(UART1, &rxbuf_cb, 1, UART_OP_INTR);/*启动UART接收*/ default_app_on_init();}
发送数据(在阻塞模式下使用uart_send)总是可以工作,但是使用中断接收数据只有在我#define CFG_UART1_SDK时才能工作,否则uart_read_cb永远不会被调用
3个月前
嗨,Gustavo,
谢谢你的问题。我建议在user_app_on_init()之后设置计时器。请尝试以下更改:
在user_config.h:
在user_callback_config.h:
在user_empty_peripheral_template.h:
在user_empty_peripheral_template.c:
谢谢,PM_Dialog