微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2540 HAL_UART_DMA 问题

cc2540 HAL_UART_DMA 问题

时间:10-02 整理:3721RD 点击:

我想用到HAL_UART_DMA,我在Options里的Preproce栏目Defined symbols设置HAL_UART=TRUE,编译后出现

Warning[w52]: More than one definition for the byte at address 0x6b in common segment INTVEC. It is defined in module "hal_uart" as well as in module "hal_key"

这是为什么?如果把POWER_SAVING去掉编译就出Warning,现在我想用到HAL_UART_DMA也想开起POWER_SAVING那怎么办?

Hi mo mo,

默认情况下uart用的就是DMA模式的. 

没有必要在preprocessor里面去定义这些值.

你去Target->CC2540EB->Config->hal_board-cfg.h里面去配置UART的模式, 包括打开或者关闭, 这里默认已经有配置了, 如果你再去preprocessor里面定义, 就有可能出现警告.

在这插个问题了: 在SimpleBLECentral这个工程中,在定义表增加HAL_UART,就会出现

Warning[w52]: More than one definition for the byte at address 0x6b in common segment INTVEC. It is defined in module "hal_uart" as well as in module "hal_key"

这个报错,同时,串口不能使用。在定义表里面把POWER_SAVING给X掉,报错将消除,同时串口也可以用。 但扫描出现问题。有谁知道是什么问题。

谢谢

你好,请问你现在这个问题解决了吗?我有一个和你类似的问题,就是把POWER_SAVING打开和将HAL_UART设置成FALSE以后,系统读不到加速度传感器的值了,系统会卡死,这是什么问题呢?

TI 同事,

好久没问你们问题了-- 基本上你们不回复的,这可不好。害得我上一个项目只得猛加班才搞定了。

在做另一个项目(添加了UART功能)时,同前几位同胞一样,我碰到了同样的问题即:

使能“POWER SAVING”,编译出现标题所述警告,同时UART无效;去能“POWER SAVING”,编译PASS,UART有效;

但我现在必须使能“POWER SAVING”及“UART有效”同时出现。硬件管脚使用及配置情况如下:

P0.0, P0.1, P0.4用作按键输入,P0.2, P0.3用作TX/RX。

请问如何设置?

 

你好,请问你是怎么开启DMA的,有例程可以发给我一下吗?谢谢啦

你好,这个问题似乎是无解的。目前看到的解决方案有两种:

1、不休眠,不i使用Powersaving;

2、使用Powersaving,但是主控用EFM或者MSP430之类的低功耗MCU,就是仅仅用254x做蓝牙收发的协议IC罢了。

1. 改变 uart 的 I\O 口,换成 P1 口

2. 改变 Key 的 I\O,换成 P1、P2 口

3. 如果 I\O 不能更改,那就删掉一个中断函数,在两外一个中断函数中判断具体是 uart 还是 Key 的中断,分别处理中断

4.在preprocessor里面去定义HAL_KEY=FALSE

产生这个问题,是因为你同时使用了  定义 外部中断入口程序  和 串口唤醒中断入口程序

方法:  屏蔽其中一个 入口. 将两个方法写成一个方法;

 串口唤醒中断入口程序 在 _hal_uart_dma.c

#if DMA_PM

HAL_ISR_FUNCTION(port0Isr, P0INT_VECTOR)

外部中断入口程序 在 hal_key.c

HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR )



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top