打印
[技术问答]

移植下V3.1的库出现的问题

[复制链接]
803|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
HXM1593|  楼主 | 2023-6-25 11:13 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
第一次使用HD32F460KCTA
官网下载了V3.1库,需要使用UART2,板已经画好了。选UART + DMA 例程
在库目录直接修改芯片,更换UART4 为UART2
SW仿真接口,用JLINK的自带串口跳线到UART2观察数据,串口助手收发没反应,
哪位高手,帮助指点一下,谢谢
main.c 的50--123行微改动
/* DMA definition */
#define RX_DMA_UNIT                     (CM_DMA1)
#define RX_DMA_CH                       (DMA_CH0)
#define RX_DMA_FCG_ENABLE()             (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA1, ENABLE))
#define RX_DMA_TRIG_SEL                 (AOS_DMA1_0)
//#define RX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART4_RI)
#define RX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART2_RI)
#define RX_DMA_RECONF_TRIG_SEL          (AOS_DMA_RC)
#define RX_DMA_RECONF_TRIG_EVT_SRC      (EVT_SRC_AOS_STRG)
#define RX_DMA_TC_INT                   (DMA_INT_TC_CH0)
#define RX_DMA_TC_FLAG                  (DMA_FLAG_TC_CH0)
#define RX_DMA_TC_IRQn                  (INT000_IRQn)
#define RX_DMA_TC_INT_SRC               (INT_SRC_DMA1_TC0)

#define TX_DMA_UNIT                     (CM_DMA2)
#define TX_DMA_CH                       (DMA_CH0)
#define TX_DMA_FCG_ENABLE()             (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA2, ENABLE))
#define TX_DMA_TRIG_SEL                 (AOS_DMA2_0)
//#define TX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART4_TI)
#define TX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART2_TI)
#define TX_DMA_TC_INT                   (DMA_INT_TC_CH0)
#define TX_DMA_TC_FLAG                  (DMA_FLAG_TC_CH0)
#define TX_DMA_TC_IRQn                  (INT001_IRQn)
#define TX_DMA_TC_INT_SRC               (INT_SRC_DMA2_TC0)

/* Timer0 unit & channel definition */
#define TMR0_UNIT                       (CM_TMR0_2)
#define TMR0_CH                         (TMR0_CH_B)
#define TMR0_FCG_ENABLE()               (FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMR0_2, ENABLE))

/* USART RX/TX pin definition */
//#define USART_RX_PORT                   (GPIO_PORT_B)   /* PB9: USART4_RX */
//#define USART_RX_PIN                    (GPIO_PIN_09)
//#define USART_RX_GPIO_FUNC              (GPIO_FUNC_37)
#define USART_RX_PORT              

使用特权

评论回复
沙发
wubangmi| | 2023-6-25 11:24 | 只看该作者
第一:PB09没有UART2功能
第二:UART2的超时用的不是Timer02_B

使用特权

评论回复
板凳
lajfda001| | 2023-6-26 10:55 | 只看该作者
这个库文件,很棒。

使用特权

评论回复
地板
sasdfji001| | 2023-6-26 11:09 | 只看该作者
感觉楼主的分享,以后 使用芯片需要仔细看一下这部分。

使用特权

评论回复
5
勇者无惧你和我| | 2023-6-26 11:09 | 只看该作者
感谢楼主的分享,没有想到这部分还是一个坑。

使用特权

评论回复
6
yang377156216| | 2023-6-26 11:10 | 只看该作者
这种简单的初始化配置可以使用 XHCode 配置工具哟,挺方便的。

使用特权

评论回复
7
HXM1593|  楼主 | 2023-6-28 09:54 | 只看该作者
wubangmi 发表于 2023-6-25 11:24
第一:PB09没有UART2功能
第二:UART2的超时用的不是Timer02_B

端口用的是
/* USART RX/TX pin definition */
//#define USART_RX_PORT                   (GPIO_PORT_B)   /* PB9: USART4_RX */
//#define USART_RX_PIN                    (GPIO_PIN_09)
//#define USART_RX_GPIO_FUNC              (GPIO_FUNC_37)
#define USART_RX_PORT                   (GPIO_PORT_A)   /* PC11: USART2_RX */
#define USART_RX_PIN                    (GPIO_PIN_11)
#define USART_RX_GPIO_FUNC              (GPIO_FUNC_33)

//#define USART_TX_PORT                   (GPIO_PORT_E)   /* PE6: USART4_TX */
//#define USART_TX_PIN                    (GPIO_PIN_06)
//#define USART_TX_GPIO_FUNC              (GPIO_FUNC_36)
#define USART_TX_PORT                   (GPIO_PORT_A)   /* PC10: USART2_TX */
#define USART_TX_PIN                    (GPIO_PIN_10)
#define USART_TX_GPIO_FUNC              (GPIO_FUNC_32)

定时器确实有错:
TIMEOUT 计数器采用 Timer0 模块的计数器,具体对应关系如下:
USART1:Timer0 Unit1 A 通道
USART2:Timer0 Unit1 B 通道
USART3:Timer0 Unit2 A 通道
USART4:Timer0 Unit2 B 通道

但我还没有调通,尴尬了

使用特权

评论回复
8
wubangmi| | 2023-6-28 10:33 | 只看该作者
HXM1593 发表于 2023-6-28 09:54
端口用的是
/* USART RX/TX pin definition */
//#define USART_RX_PORT                   (GPIO_PORT_B ...

如果你用的是UART1,那么你的GPIO部分配置没有错,抛开超时接收部分代码,你应该能收到数据。
但是你说没调通,那么你应该用的是UART2,此时你的GPIO功能应该是36和37,而不是32和33

使用特权

评论回复
9
HXM1593|  楼主 | 2023-6-28 21:23 | 只看该作者
wubangmi 发表于 2023-6-28 10:33
如果你用的是UART1,那么你的GPIO部分配置没有错,抛开超时接收部分代码,你应该能收到数据。
但是你说没调 ...

uart4 改成 uart2,只修改了宏定义,100PIN改了64PIN芯片HD32F460KCTA
jlink的虚拟串口接到UART2,用串口助手收发观察,没有反应;
V3.1的uart+dma例程
超时定时器换成了TIME01B

/* DMA definition */
#define RX_DMA_UNIT                     (CM_DMA1)
#define RX_DMA_CH                       (DMA_CH0)
#define RX_DMA_FCG_ENABLE()             (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA1, ENABLE))
#define RX_DMA_TRIG_SEL                 (AOS_DMA1_0)
//#define RX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART4_RI)
#define RX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART2_RI)
#define RX_DMA_RECONF_TRIG_SEL          (AOS_DMA_RC)
#define RX_DMA_RECONF_TRIG_EVT_SRC      (EVT_SRC_AOS_STRG)
#define RX_DMA_TC_INT                   (DMA_INT_TC_CH0)
#define RX_DMA_TC_FLAG                  (DMA_FLAG_TC_CH0)
#define RX_DMA_TC_IRQn                  (INT000_IRQn)
#define RX_DMA_TC_INT_SRC               (INT_SRC_DMA1_TC0)

#define TX_DMA_UNIT                     (CM_DMA2)
#define TX_DMA_CH                       (DMA_CH0)
#define TX_DMA_FCG_ENABLE()             (FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA2, ENABLE))
#define TX_DMA_TRIG_SEL                 (AOS_DMA2_0)
//#define TX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART4_TI)
#define TX_DMA_TRIG_EVT_SRC             (EVT_SRC_USART2_TI)
#define TX_DMA_TC_INT                   (DMA_INT_TC_CH0)
#define TX_DMA_TC_FLAG                  (DMA_FLAG_TC_CH0)
#define TX_DMA_TC_IRQn                  (INT001_IRQn)
#define TX_DMA_TC_INT_SRC               (INT_SRC_DMA2_TC0)

/* Timer0 unit & channel definition */
//#define TMR0_UNIT                       (CM_TMR0_2)
//#define TMR0_CH                         (TMR0_CH_B)
//#define TMR0_FCG_ENABLE()               (FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMR0_2, ENABLE))
#define TMR0_UNIT                       (CM_TMR0_1)
#define TMR0_CH                         (TMR0_CH_B)
#define TMR0_FCG_ENABLE()               (FCG_Fcg2PeriphClockCmd(FCG2_PERIPH_TMR0_1, ENABLE))

/* USART RX/TX pin definition */
//#define USART_RX_PORT                   (GPIO_PORT_B)   /* PB9: USART4_RX */
//#define USART_RX_PIN                    (GPIO_PIN_09)
//#define USART_RX_GPIO_FUNC              (GPIO_FUNC_37)
#define USART_RX_PORT                   (GPIO_PORT_C)   /* PC11: USART2_RX */
#define USART_RX_PIN                    (GPIO_PIN_11)
#define USART_RX_GPIO_FUNC              (GPIO_FUNC_33)

//#define USART_TX_PORT                   (GPIO_PORT_E)   /* PE6: USART4_TX */
//#define USART_TX_PIN                    (GPIO_PIN_06)
//#define USART_TX_GPIO_FUNC              (GPIO_FUNC_36)
#define USART_TX_PORT                   (GPIO_PORT_C)   /* PC10: USART2_TX */
#define USART_TX_PIN                    (GPIO_PIN_10)
#define USART_TX_GPIO_FUNC              (GPIO_FUNC_32)

/* USART unit definition */
//#define USART_UNIT                      (CM_USART4)
//#define USART_FCG_ENABLE()              (FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_USART4, ENABLE))
#define USART_UNIT                      (CM_USART2)
#define USART_FCG_ENABLE()              (FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_USART2, ENABLE))


/* USART baudrate definition */
#define USART_BAUDRATE                  (9600UL)//(115200UL)

/* USART timeout bits definition */
#define USART_TIMEOUT_BITS              (2000U)

/* USART interrupt definition */
#define USART_TX_CPLT_IRQn              (INT002_IRQn)
//#define USART_TX_CPLT_INT_SRC           (INT_SRC_USART4_TCI)
#define USART_TX_CPLT_INT_SRC           (INT_SRC_USART2_TCI)

#define USART_RX_ERR_IRQn               (INT003_IRQn)
//#define USART_RX_ERR_INT_SRC            (INT_SRC_USART4_EI)
#define USART_RX_ERR_INT_SRC            (INT_SRC_USART2_EI)

//#define USART_RX_TIMEOUT_IRQn           (INT004_IRQn)
//#define USART_RX_TIMEOUT_INT_SRC        (INT_SRC_USART4_RTO)
#define USART_RX_TIMEOUT_IRQn           (INT004_IRQn)
#define USART_RX_TIMEOUT_INT_SRC        (INT_SRC_USART2_RTO)



使用特权

评论回复
10
wubangmi| | 2023-6-29 09:24 | 只看该作者
HXM1593 发表于 2023-6-28 21:23
uart4 改成 uart2,只修改了宏定义,100PIN改了64PIN芯片HD32F460KCTA
jlink的虚拟串口接到UART2,用串口 ...


我上一条的留言,你貌似根本没有看进去呀

使用特权

评论回复
11
georgeliu2016| | 2023-7-1 11:57 | 只看该作者
感谢楼主分享。

使用特权

评论回复
12
HXM1593|  楼主 | 2023-7-2 15:25 | 只看该作者
wubangmi 发表于 2023-6-29 09:24
我上一条的留言,你貌似根本没有看进去呀

谢谢你!
通了,开心
把两个UART1、2搞乱了,去掉一个单独来调,发现错的地方

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

796

帖子

2

粉丝