注册 登录
查看: 262|回复: 3

【山外K66】bug 汇总

[复制链接]
发表于 2019-4-2 20:43:03 | 显示全部楼层 |阅读模式
uart4 的中断时能,有bug,修改如下:
Chip\src\MK66_uart.c , uart_rx_irq_en 和 uart_tx_irq_en 函数。

  1. /*!
  2. *  @brief      开串口接收中断
  3. *  @param      UARTn_e       模块号(UART0~UART5)
  4. *  @since      v6.2
  5. *  Sample usage:       uart_rx_irq_en(UART3);         //开串口3接收中断
  6. */
  7. void uart_rx_irq_en(UARTn_e uratn)
  8. {
  9.     UART_C2_REG(UARTN[uratn]) |= UART_C2_RIE_MASK;                          //使能UART接收中断
  10.     if(uratn <= UART3)
  11.     {
  12.         enable_irq((IRQn_t)((uratn << 1) + UART0_RX_TX_IRQn));                  //使能IRQ中断
  13.     }
  14.     else if (uratn == UART4)
  15.     {
  16.         enable_irq(UART4_RX_TX_IRQn);                  //使能IRQ中断

  17.     }
  18. }

  19. /*!
  20. *  @brief      开串口发送中断
  21. *  @param      UARTn_e       模块号(UART0~UART5)
  22. *  @since      v6.2
  23. *  Sample usage:       uart_tx_irq_en(UART3);         //开串口3发送中断
  24. */
  25. void uart_tx_irq_en(UARTn_e uratn)
  26. {
  27.     UART_C2_REG(UARTN[uratn]) |= UART_C2_TIE_MASK;                          //使能UART发送中断
  28.     if(uratn <= UART3)
  29.     {
  30.         enable_irq((IRQn_t)((uratn << 1) + UART0_RX_TX_IRQn));                  //使能IRQ中断
  31.     }
  32.     else if (uratn == UART4)
  33.     {
  34.         enable_irq(UART4_RX_TX_IRQn);                  //使能IRQ中断

  35.     }
  36. }


参考的 main函数:
  1. /*!
  2. *  @brief      VCAN_PORT中断服务函数
  3. *  @since      v5.0
  4. */
  5. void uartn_handler(void)
  6. {
  7.     char ch;

  8.     if(uart_query    (VCAN_PORT) == 1)   //接收数据寄存器满
  9.     {
  10.         //用户需要处理接收数据
  11.         uart_getchar   (VCAN_PORT, &ch);                    //无限等待接受1个字节
  12.         uart_putchar   (VCAN_PORT , ch);                    //发送字符串
  13.     }
  14. }

  15. /*!
  16. *  @brief      main函数
  17. *  @since      v6.2
  18. *  @note       串口中断接收测试
  19. */
  20. void main()
  21. {
  22.     //uart_init(VCAN_PORT,115200);     //初始化串口(VCAN_PORT 是工程里配置为printf函数输出端口,故已经进行初始化)

  23.     uart_putstr   (VCAN_PORT ,"\n\n\n接收中断测试:");           //发送字符串

  24.     if(VCAN_PORT <= UART3)
  25.     {
  26.         set_vector_handler(UART0_RX_TX_VECTORn + VCAN_PORT*2,uartn_handler);   // 设置中断服务函数到中断向量表里 ,假如 VCAN_PORT == UART3 ,那么 UART0_RX_TX_VECTORn + VCAN_PORT*2 = UART3_RX_TX_VECTORn
  27.     }
  28.     else
  29.     {
  30.         set_vector_handler(UART4_RX_TX_VECTORn ,uartn_handler);   // 设置中断服务函数到中断向量表里
  31.     }

  32.     uart_rx_irq_en (VCAN_PORT);                                 //开串口接收中断

  33.     while(1)
  34.     {

  35.     }
  36. }


评分

参与人数 1互助 +2 收起 理由
光脚的Boy + 2 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2019-4-2 20:46:46 | 显示全部楼层
山外哥,上位机看波形时只能用uart3 吗?为什么用其他的就不能用了,其他串口可以用上位机发送字符,就是不能上传波形~~是需要在哪里修改吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-2 20:54:06 | 显示全部楼层
光脚的Boy 发表于 2019-4-2 20:46
山外哥,上位机看波形时只能用uart3 吗?为什么用其他的就不能用了,其他串口可以用上位机发送字符,就是不 ...

自己换文本的hex格式,看看数据是否正确,是否符合协议
和uart是多少,没任何关系
回复 支持 反对

使用道具 举报

发表于 2019-4-5 09:21:07 | 显示全部楼层
lcd_point还是lcd_points也有问题
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回列表 返回顶部