• 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中使用的域名与程序使用的域名不相符所导致。

  • 相关阅读:
    php数组
    php 函数
    数据库操作
    PHP基础
    mysql常用函数
    10.25 (下午) 开课一个月零二十一天(抽象)
    10.25 (上午) 开课一个月零二十一天 (继承多态)
    10.24 (下午) 开课一个月零二十天 (封装)
    10.24 (上午) 开课一个月零二十天 (面向对象)
    10.23 开课一个月零十九天 (PHP数组)
  • 原文地址:https://www.cnblogs.com/elaron/p/2106503.html
Copyright © 2020-2023  润新知