【已解决】BT3L(tlsr8253) IO中断,没有进入中断函数
Posted: 2023年 Mar 16日 07:58
Code: Select all
void user_key_init(void)
{
/* key gpio init */
ty_pin_init(KEY_PIN, TY_PIN_MODE_IN_PU);
}
#define GPIO_WAKEUP_MODULE_POLARITY 0
#define WAKEUP_MODULE_GPIO GPIO_PA0
uint32_t ty_pin_init(uint16_t pin, ty_pin_mode_t mode)
{
gpio_set_func(pin, AS_GPIO);
if ((mode & TY_PIN_INOUT_MASK) <= TY_PIN_IN_IRQ) {
gpio_set_input_en(pin, 1);
gpio_set_output_en(pin, 0);
} else {
gpio_set_input_en(pin, 0);
gpio_set_output_en(pin, 1);
}
switch (mode) {
case TY_PIN_MODE_IN_PU:
gpio_setup_up_down_resistor(pin, PM_PIN_PULLUP_10K);
break;
case TY_PIN_MODE_IN_PD:
gpio_setup_up_down_resistor(pin, PM_PIN_PULLDOWN_100K);
break;
case TY_PIN_MODE_IN_FL:
gpio_setup_up_down_resistor(pin, PM_PIN_UP_DOWN_FLOAT);
break;
case TY_PIN_MODE_OUT_PP_LOW:
gpio_write(pin, 0);
break;
case TY_PIN_MODE_OUT_PP_HIGH:
gpio_write(pin, 1);
break;
default:
break;
}
#if (GPIO_WAKEUP_MODULE_POLARITY == 1)
cpu_set_gpio_wakeup (WAKEUP_MODULE_GPIO, Level_High, 1); // pad high wakeup deepsleep
GPIO_WAKEUP_MODULE_LOW;
#else
cpu_set_gpio_wakeup (WAKEUP_MODULE_GPIO, Level_Low, 1); // pad high wakeup deepsleep
GPIO_WAKEUP_MODULE_HIGH;
#endif
return 0;
}
void user_key_irq_handler(void)
{
//TUYA_APP_LOG_DEBUG("======>key irq.");
//tuya_ble_timer_start(sg_key_timer);
}
_attribute_ram_code_ void irq_handler(void)
{
user_key_irq_handler();
irq_blt_sdk_handler ();
#if (HCI_ACCESS==HCI_USE_UART)
unsigned char irqS = dma_chn_irq_status_get();
if(irqS & FLD_DMA_CHN_UART_RX) //rx
{
dma_chn_irq_status_clr(FLD_DMA_CHN_UART_RX);
u8* w = spp_rx_fifo.p + (spp_rx_fifo.wptr & (spp_rx_fifo.num-1)) * spp_rx_fifo.size;
if(w[0]!=0)
{
my_fifo_next(&spp_rx_fifo);
u8* p = spp_rx_fifo.p + (spp_rx_fifo.wptr & (spp_rx_fifo.num-1)) * spp_rx_fifo.size;
reg_dma_uart_rx_addr = (u16)((u32)p); //switch uart RX dma address
}
}
if(irqS & FLD_DMA_CHN_UART_TX) //tx
{
dma_chn_irq_status_clr(FLD_DMA_CHN_UART_TX);
}
#endif
}