cc2540 HAL_UART_DMA 问题
我想用到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 )