[技术问答] uart中断需要启动NVIC IRQn问题

[复制链接]
4209|7
 楼主| flycamelaaa 发表于 2021-7-26 10:03 | 显示全部楼层 |阅读模式
vi, vi, UART, ic, BLE, TI
各位前辈 安安

在NUC230_240_Series_BSP_CMSIS_V3.01.004\SampleCode\StdDriver\UART_TxRx_Function官方范例中
此范例最后只启动uart的中断,没启动NVIC的IRQ 中断请求,中断功能正常,想问看看各位大大为何可以如此写?谢谢大家!


    /* Enable Interrupt and install the call back function */
    UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_THRE_IEN_Msk | UART_IER_TOUT_IEN_Msk));
    while(g_bWait);


    /* Enable Interrupt and install the call back function */
    UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_THRE_IEN_Msk | UART_IER_TOUT_IEN_Msk));
    NVIC_EnableIRQ(UART02_IRQn);
    while(g_bWait);

呐咯密密 发表于 2021-7-27 15:05 | 显示全部楼层
UART_EnableInt(UART0, (UART_IER_RDA_IEN_Msk | UART_IER_THRE_IEN_Msk | UART_IER_TOUT_IEN_Msk));
这句话就申明了呀,开启中断就这两步,新塘的所有流程调用库函数都会非常简单
skyred 发表于 2021-8-10 17:57 | 显示全部楼层
函数内部处理,有时候,需要了解下
幸福小强 发表于 2021-8-10 22:10 | 显示全部楼层
你定位那个函数,看看里面怎么做的。
幸福小强 发表于 2021-8-10 22:20 | 显示全部楼层
  1.    /* Enable UART wake-up and receive data available interrupt */
  2.     NVIC_EnableIRQ(UART1_IRQn);
  3.     UART_EnableInt(UART1, UART_INTEN_WKIEN_Msk | UART_INTEN_RDAIEN_Msk | UART_INTEN_RXTOIEN_Msk);

在471的例子里看到了。
幸福小强 发表于 2021-8-10 22:22 | 显示全部楼层
你看的那个例子是普通的,里面没有中断处理函数,只是用了那个标志位而已。
幸福小强 发表于 2021-8-10 22:24 | 显示全部楼层
下载了你用的那个,是在那个中断使能里面已经有了调用NVIC
  1. void UART_EnableInt(UART_T*  uart, uint32_t u32InterruptFlag)
  2. {

  3.     /* Enable UART specified interrupt */
  4.     UART_ENABLE_INT(uart, u32InterruptFlag);

  5.     /* Enable NVIC UART IRQ */
  6.     if(uart == UART0)
  7.         NVIC_EnableIRQ(UART02_IRQn);
  8.     else if(uart == UART1)
  9.         NVIC_EnableIRQ(UART1_IRQn);
  10.     else
  11.         NVIC_EnableIRQ(UART02_IRQn);

  12. }
幸福小强 发表于 2021-8-10 22:29 | 显示全部楼层
2612061128d300a8e0.png
对比了一下,不同系列的BSP库函数还内容不一样。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

837

主题

4432

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部