CSL 无法 读写XBSR的SP2位

这两天遇到一个奇怪的问题

在CSL的API中,明明提到XBSR又SP2这个寄存器,查看5502 datasheet也可以找到这一证据。

但是使用 

CHIP_FSET(XBSR,SP2, 0 );

语句进行XBSR的SP2位设置的时候,在编译时出现如下错误提示:

"uart_test.c", line 37: error: identifier "_CHIP_XBSR_SP2_CLR" is undefined
"uart_test.c", line 37: warning: function declared implicitly

去掉仿真器,尝试使用软件仿真对以上代码进行编译时,依然提示该错误。

5502最小版的技术客服认为是CCS软件的问题,要求下载新的补丁文件。

------------------------

在网上偶然看到一段代码里面用的域名不是SP2而是SP2MODE,就想着试一试。没想到竟然成功了……坑爹的API嗷……

贴一段代码,测试成功:

#include  < stdio.h >
#include 
< csl.h >
#include 
< csl_uart.h >
#include 
< csl_irq.h >

#define  LEN 4;

UART_Setup Params 
=  {
        UART_CLK_INPUT_20,
        UART_BAUD_9600,
        UART_WORD8,
        UART_STOP1,
        UART_DISABLE_PARITY,
        UART_FIFO_DISABLE,
        UART_NO_LOOPBACK
    };

void  sleep( int  time){
    
int  i  =   0 ;
    
for (;i  <  time; i ++ ){
    }

}
void  main(){
    Uint16 regVal;

    CSL_init();
// 调用任何CSL模块API之前都要使用的语句

    CHIP_FSET(XBSR,SP2MODE,
1 );
    regVal 
=  CHIP_RGET(XBSR);
    
     printf(
" XBSR value: %x \n " ,regVal);

  printf(
" hello world\n " );
}

将SP2MODE置1时,XBSR寄存器的值regVal输出为5;

将SP2MODE置0时,XBSR寄存器的值regVal输出为1;

---------------------

问题解决

是因为API中使用的域名与程序使用的域名不相符所导致。

转载于:https://www.cnblogs.com/elaron/archive/2011/07/14/2106503.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值