打印
[LOOK]

两种头文件优化16个例程结果对比

[复制链接]
2483|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hotpower|  楼主 | 2011-7-6 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
se, TE, NUC, ease, sd
本帖最后由 hotpower 于 2011-7-7 01:29 编辑

例程详见:
Lee老师LOOK测试版及新头文件和相关测试例程

NUC1xxM051Seriescfg.h位域方法与Lee老师的头文件优化结果对比
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (1)
-----------------------------------------------------------------
text data bss dec hex filename
3308 392 1272 4972 136c Debug/Look_Flag.elf
2172 232 1272 3676 e5c Release/Look_Flag.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2172-2168=4
-----------------------------------------------------------------
text data bss dec hex filename
4528 392 1272 6192 1830 Debug/Look_Flag.elf
2168 232 1272 3672 e58 Release/Look_Flag.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (2)
-----------------------------------------------------------------
text data bss dec hex filename
3344 352 1112 4808 12c8 Debug/LOOK_MMBOX.elf
2152 208 1112 3472 d90 Release/LOOK_MMBOX.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2152-2136=16
-----------------------------------------------------------------
text data bss dec hex filename
4028 352 1112 5492 1574 Debug/LOOK_MMBOX.elf
2136 208 1112 3456 d80 Release/LOOK_MMBOX.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (3)
-----------------------------------------------------------------
text data bss dec hex filename
2340 272 656 3268 cc4 Debug/LOOKDemo.elf
1544 128 656 2328 918 Release/LOOKDemo.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1544-1544=0
-----------------------------------------------------------------
text data bss dec hex filename
2372 272 656 3300 ce4 Debug/LOOKDemo.elf
1544 128 656 2328 918 Release/LOOKDemo.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (4)
-----------------------------------------------------------------
text data bss dec hex filename
3760 400 1304 5464 1558 Debug/Look_Mutex.elf
2440 224 1312 3976 f88 Release/Look_Mutex.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2440-2432=8
-----------------------------------------------------------------
text data bss dec hex filename
5648 400 1304 7352 1cb8 Debug/Look_Mutex.elf
2432 224 1312 3968 f80 Release/Look_Mutex.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (5)
-----------------------------------------------------------------
text data bss dec hex filename
2460 240 744 3444 d74 Debug/LOOK_IDLE.elf
1652 136 744 2532 9e4 Release/LOOK_IDLE.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1652-1644=8
-----------------------------------------------------------------
text data bss dec hex filename
3104 240 744 4088 ff8 Debug/LOOK_IDLE.elf
1644 136 744 2524 9dc Release/LOOK_IDLE.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (6)
-----------------------------------------------------------------
text data bss dec hex filename
2636 328 1024 3988 f94 Debug/LOOK_SEM.elf
1868 184 1024 3076 c04 Release/LOOK_SEM.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1868-1852=16
-----------------------------------------------------------------
text data bss dec hex filename
4088 328 1024 5440 1540 Debug/LOOK_SEM.elf
1852 184 1024 3060 bf4 Release/LOOK_SEM.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (7)
-----------------------------------------------------------------
text data bss dec hex filename
4224 440 1560 6224 1850 Debug/COND.elf
2724 248 1568 4540 11bc Release/COND.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2724-2712=12
-----------------------------------------------------------------
text data bss dec hex filename
4812 440 1560 6812 1a9c Debug/COND.elf
2712 248 1568 4528 11b0 Release/COND.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (8)
-----------------------------------------------------------------
text data bss dec hex filename
2836 328 928 4092 ffc Debug/Look_KeyLed.elf
1896 168 928 2992 bb0 Release/Look_KeyLed.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1896-1896=0
-----------------------------------------------------------------
text data bss dec hex filename
4508 328 928 5764 1684 Debug/Look_KeyLed.elf
1896 168 928 2992 bb0 Release/Look_KeyLed.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (9)
-----------------------------------------------------------------
text data bss dec hex filename
2440 344 928 3712 e80 Debug/led.elf
1744 144 928 2816 b00 Release/led.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1744-1744=0
-----------------------------------------------------------------
text data bss dec hex filename
2776 344 928 4048 fd0 Debug/led.elf
1744 144 928 2816 b00 Release/led.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (10)
-----------------------------------------------------------------
text data bss dec hex filename
3156 328 928 4412 113c Debug/Look_Mbox_KeyLed.elf
2052 168 928 3148 c4c Release/Look_Mbox_KeyLed.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2052-2044=8
-----------------------------------------------------------------
text data bss dec hex filename
5712 328 928 6968 1b38 Debug/Look_Mbox_KeyLed.elf
2044 168 928 3140 c44 Release/Look_Mbox_KeyLed.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (11)
-----------------------------------------------------------------
text data bss dec hex filename
2392 304 904 3600 e10 Debug/LOOK_YIELD.elf
1724 136 904 2764 acc Release/LOOK_YIELD.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1724-1716=8
-----------------------------------------------------------------
text data bss dec hex filename
2768 304 904 3976 f88 Debug/LOOK_YIELD.elf
1716 136 904 2756 ac4 Release/LOOK_YIELD.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (12)
-----------------------------------------------------------------
text data bss dec hex filename
2044 272 656 2972 b9c Debug/LOOK_DELAY.elf
1544 128 656 2328 918 Release/LOOK_DELAY.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1544-1544=0
-----------------------------------------------------------------
text data bss dec hex filename
2336 272 656 3264 cc0 Debug/LOOK_DELAY.elf
1544 128 656 2328 918 Release/LOOK_DELAY.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (13)
-----------------------------------------------------------------
text data bss dec hex filename
3004 296 696 3996 f9c Debug/LOOK_TIMER.elf
1936 152 688 2776 ad8 Release/LOOK_TIMER.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数1936-1920=16
-----------------------------------------------------------------
text data bss dec hex filename
3692 296 696 4684 124c Debug/LOOK_TIMER.elf
1920 152 688 2760 ac8 Release/LOOK_TIMER.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (14)
-----------------------------------------------------------------
text data bss dec hex filename
4740 480 736 5956 1744 Debug/ds18b20.elf
2824 280 744 3848 f08 Release/ds18b20.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数2824-2844=-20
-----------------------------------------------------------------
text data bss dec hex filename
8556 480 736 9772 262c Debug/ds18b20.elf
2844 280 744 3868 f1c Release/ds18b20.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (15)
-----------------------------------------------------------------
text data bss dec hex filename
8048 1368 1760 11176 2ba8 Debug/M0_LOOK_HOT.elf
4628 728 1760 7116 1bcc Release/M0_LOOK_HOT.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数4628-4536=92
-----------------------------------------------------------------
text data bss dec hex filename
15320 1368 1760 18448 4810 Debug/M0_LOOK_HOT.elf
4536 728 1760 7024 1b70 Release/M0_LOOK_HOT.elf
-----------------------------------------------------------------
NUC1xxM051Seriescfg.h (16)
-----------------------------------------------------------------
text data bss dec hex filename
6088 776 1208 8072 1f88 Debug/LOOK_SPI_PDMA.elf
4024 416 1208 5648 1610 Release/LOOK_SPI_PDMA.elf
-----------------------------------------------------------------
nuc120re3an.h 优化字节数4024-3960=64
-----------------------------------------------------------------
text data bss dec hex filename
17924 776 1208 19908 4dc4 Debug/LOOK_SPI_PDMA.elf
3960 416 1208 5584 15d0 Release/LOOK_SPI_PDMA.elf

相关帖子

沙发
hotpower|  楼主 | 2011-7-6 21:01 | 只看该作者
两种头文件写法比较:

1.红杏

        SYSs.IPRSTC2.Bits.UART1_RST = 1;
        SYSs.IPRSTC2.Bits.UART1_RST = 0;
        UART1s.FCR.Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);

        UART1s.LCR.Regs = 3 << UART_LCR_WLS;                                        // 设置线控
        UART1s.IER.Regs = 1 << UART_IER_RDA_IEN;                                // 允许接收中断
        UART1s.BAUD.Regs = (0x4e0 << UART_BAUD_BRD)
                                                | (1 << UART_BAUD_DIV_X_ONE)
                                                | (1 << UART_BAUD_DIV_X_EN);                // 波特率 = 9600

        UART1s.DATA.Regs = 0xf0;                                                                // 发出“复位”信号
2.Lee老师暴力的头文件

        SYS.IPRSTC2()
           .UART1_RST(1);
        SYS.IPRSTC2()
           .UART1_RST(0);
        UART1.FCR()
             .TFR(1)
                 .RFR(1);

        UART1.LCR(0)
             .WLS(3);                                        // 设置线控
        UART1.IER(0)
             .RDA_IEN(1);                                // 允许接收中断
        UART1.BAUD(0)
             .BRD(0x4e0)
                 .DIV_X_ONE(1)
                 .DIV_X_EN(1);                // 波特率 = 9600

        UART1.DATA = 0xf0;                                                                // 发出“复位”信号

使用特权

评论回复
板凳
hotpower|  楼主 | 2011-7-6 21:08 | 只看该作者
本帖最后由 hotpower 于 2011-7-6 21:09 编辑

红杏转暴力规则1:
例如:
UART1s.FCR.Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);
1.去掉模块结构的s
UART1.FCR.Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);
2.寄存器加()
UART1.FCR().Regs |= (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);
3.去掉Regs|=
UART1.FCR(). (1 << UART_FCR_TFR) | (1 << UART_FCR_RFR);
4.设置UART_FCR_TFR
UART1.FCR(). FCR_TFR(1) | (1 << UART_FCR_RFR);
5.设置UART_FCR_RFR
UART1.FCR(). TFR(1). RFR(1);

使用特权

评论回复
地板
hotpower|  楼主 | 2011-7-6 21:17 | 只看该作者
红杏转暴力规则2:
例如:(注意三个位都属于寄存器CON)

        I2C1s.CON.Bits.EI = 1;                                //I2C1 使能中断
        I2C1s.CON.Bits.STA = 0;                                //I2C1起始标志清零
        I2C1s.CON.Bits.STO = 0;                                //I2C1结束标志清零

1.去掉模块结构的s
[code]
        I2C1.CON.Bits.EI = 1;                                //I2C1 使能中断
2.将".Bits"改为"()"

        I2C1.CON().EI = 1;                                //I2C1 使能中断
3.设置EI

        I2C1.CON().EI(1)                                //I2C1 使能中断
4.清除STA

        I2C1.CON().EI(1)                                //I2C1 使能中断
                                  .STA(0)                                //I2C1起始标志清零
5.清除STO

        I2C1.CON().EI(1)                                //I2C1 使能中断
                      .STA(0)                                //I2C1起始标志清零
                         .STO(0);                                //I2C1结束标志清零

使用特权

评论回复
5
hotpower|  楼主 | 2011-7-6 21:51 | 只看该作者
一些转换例程摘录:
#if LOOK_H == 0
                                PDMA0s.CSR.Bits.PDMACEN = 1;        //使能PDMA通道0
                                PDMA0s.CSR.Bits.TRIG_EN = 1;        //使能PDMA通道0
#else
                                PDMA0.CSR()
                                     .PDMACEN(1)        //使能PDMA通道0
                                     .TRIG_EN(1);        //使能PDMA通道0
#endif
#if LOOK_H == 0
                                PDMA0s.CSR.Bits.PDMACEN = 1;        //使能PDMA通道0
                                PDMA0s.CSR.Bits.TRIG_EN = 1;        //使能PDMA通道0
#else
                                PDMA0.CSR()
                                     .PDMACEN(1)        //使能PDMA通道0
                                     .TRIG_EN(1);        //使能PDMA通道0
#endif
#if LOOK_H == 0
        //SYSCLKs.APBCLK.Bits.SPI1_EN = 1;                 //使用LOOK进行初始化配置
        SYSs.IPRSTC2.Bits.SPI1_RST = 1;                        //SPI1模块复位
        SYSs.IPRSTC2.Bits.SPI1_RST = 0;                        //SPI1模块正常工作

        SPI1s.CNTRL.Bits.TX_BIT_LEN = 0;                //该寄存器用于标示一次传输中,完成的传输长度 32bits
        SPI1s.CNTRL.Bits.SLAVE = 0;                                //MCU作为主机模式
        SPI1s.SSR.Bits.SSR = 0;                        //当ASS位被清除,对该寄存器任何一位写1,将会激活SPI_SS [1:0]线,写0线上为非活动状态。
        SPI1s.SSR.Bits.AUTOSS = 0;                //该位清位,从机是否发出信号,由设置或清除SSR[1:0]寄存器决定
        //禁止自动片选功能
        SPI1s.CNTRL.Bits.CLKP = 0;                // SCLK 低电平闲置
        SPI1s.CNTRL.Bits.TX_NEG = 1;        //SDO 信号在SPICLK的下降沿发送
        SPI1s.CNTRL.Bits.RX_NEG = 0;        //SDI 信号在SPICLK上升沿接收   
        //配置SPI1为主模式 TYPE1波形 32位传输

        SPI1s.CNTRL.Bits.LSB = 0;                //配置传输比特的顺序:优先发送/接收MSB                       
       
        SPI1s.DIVIDER.Bits.DIVIDER2 = 0xFFFF;
        SPI1s.DIVIDER.Bits.DIVIDER = ((12000000/2/1000000 + 1) >>1) - 1;
        //设置SPI的时钟频率为1MHz

        GPIOAs.PMD.Bits.PMD14 = GPIO_PMD_OUTPUT;                          //SPI_FLAH_CS配置为输出
        DISABLE_SPI_CS;

        // Enable PDMA Clock       
        SYSs.REGLOCK.Regs = 0x59;
        SYSs.REGLOCK.Regs = 0x16;
        SYSs.REGLOCK.Regs = 0x88;
        SYSCLKs.AHBCLK.Bits.PDMA_EN = 1;
        SYSs.REGLOCK.Regs = 0x00;

        /* -------------------------------------------- */
    /* Configure PDMA Channel 0 to receive SPI1 Rx0 */
        /* -------------------------------------------- */
///        PDMA_GCR->PDSSR0.SPI1_RXSEL        =        0;
        PDMA_GCRs.PDSSR0.Bits.SPI1_RXSEL        =        0;
        //APB设备选择 PDMA 通道   SPI选择PDMA通道0 读操作

        //PDMA 通道0时钟使能   
///        PDMA_GCR->GCRCSR.CLK0_EN = 1 ;
        PDMA_GCRs.GCRCSR.Bits.CLK0_EN = 1 ;
        PDMA0s.CSR.Bits.PDMACEN = 1;                        //PDMA通道使能
///        PDMA0s.SAR.Regs = SPI1_BASE + 0x10;                //PDMA 发送源地址寄存器  SPI1 Rx0
        PDMA0s.SAR.Regs = (uint32_t)&SPI1s.RX0.Regs;                //PDMA 发送源地址寄存器  SPI1 Rx0
        PDMA0s.DAR.Regs = (uint32_t)DestArray;        //PDMA 传输目的地址寄存器
        PDMA0s.CSR.Bits.SAD_SEL = 0b10;                        //传输源地址固定(适用于单数据 传递到多目的地址)
        PDMA0s.CSR.Bits.DAD_SEL = 0b00;                        //传输目的地址 持续增加
        PDMA0s.CSR.Bits.APB_TWS = 0b01;                        // 一字节(8 bits)为单位传输 用于 PDMA 运作
        PDMA0s.CSR.Bits.MODE_SEL= 0b01;                        //01 = IP到存储器模式 (APB-to-Memory).
        PDMA0s.BCR.Regs = 256;                                        //PDMA 传输计数寄存器
        //配置PDMA通道0
       
       
    PDMA0s.IER.Bits.BLKD_IE = 1;
        //使能PDMA通道0中断  中断源为:eDRVPDMA_BLKD(PDMA Transfer Done 中断使能)

    /* -------------------------------------------- */
    /* Configure PDMA Channel 1 to receive SPI1 Tx0 */
        /* -------------------------------------------- */
       
        PDMA_GCRs.PDSSR0.Bits.SPI1_TXSEL        = 1;
        //APB设备选择PDMA通道   SPI选择PDMA通道1 写操作
        PDMA_GCRs.GCRCSR.Bits.CLK1_EN = 1 ;
        PDMA1s.SAR.Regs = (uint32_t)SrcArray;        //PDMA 发送源地址寄存器
        PDMA1s.DAR.Regs = (uint32_t)&SPI1s.TX0.Regs;                //PDMA 传输目的地址寄存器 TX0
        PDMA1s.CSR.Bits.SAD_SEL = 0b00;                        //传输源地址 持续增加
        PDMA1s.CSR.Bits.DAD_SEL = 0b10;                        //传输目的地址不变
        PDMA1s.CSR.Bits.APB_TWS = 0b01;                        // 一字节(8 bits)为单位传输 用于 PDMA 运作
        PDMA1s.CSR.Bits.MODE_SEL= 0b10;                        //存储器到 IP 模式 (Memory-to-APB)
        PDMA1s.BCR.Regs = 256;                                        //PDMA 传输计数寄存器
        //配置PDMA通道1
       
    PDMA1s.IER.Bits.BLKD_IE = 1;
#else
        //SYSCLKs.APBCLK.Bits.SPI1_EN = 1;                 //使用LOOK进行初始化配置
        SYS.IPRSTC2().SPI1_RST = 1;                        //SPI1模块复位
        SYS.IPRSTC2().SPI1_RST = 0;                        //SPI1模块正常工作

        SPI1.CNTRL()
            .TX_BIT_LEN(0)                //该寄存器用于标示一次传输中,完成的传输长度 32bits
            .SLAVE(0);                                //MCU作为主机模式
        SPI1.SSR()
            .SSR(0)                        //当ASS位被清除,对该寄存器任何一位写1,将会激活SPI_SS [1:0]线,写0线上为非活动状态。
            .AUTOSS(0);                //该位清位,从机是否发出信号,由设置或清除SSR[1:0]寄存器决定
        //禁止自动片选功能
        SPI1.CNTRL()
            .CLKP(0)                // SCLK 低电平闲置
            .TX_NEG(1)        //SDO 信号在SPICLK的下降沿发送
            .RX_NEG(0)        //SDI 信号在SPICLK上升沿接收   
        //配置SPI1为主模式 TYPE1波形 32位传输

            .LSB(0);                //配置传输比特的顺序:优先发送/接收MSB                       
       
        SPI1.DIVIDER()
            .DIVIDER2(0xFFFF)
            .DIVIDER(((12000000/2/1000000 + 1) >>1) - 1);
        //设置SPI的时钟频率为1MHz

        GPIOA.PMD().PMD14 = gpio_t::OUTPUT;                          //SPI_FLAH_CS配置为输出
        DISABLE_SPI_CS;

        // Enable PDMA Clock       
        SYS.REGLOCK = 0x59;
        SYS.REGLOCK = 0x16;
        SYS.REGLOCK = 0x88;
/*
        SYS.REGWRPROT = 0x59;
        SYS.REGWRPROT = 0x16;
        SYS.REGWRPROT = 0x88;
*/
        SYSCLK.AHBCLK().PDMA_EN = 1;
///        SYS.REGLOCK = 0x00;
        SYS.REGWRPROT = 0x00;

        /* -------------------------------------------- */
    /* Configure PDMA Channel 0 to receive SPI1 Rx0 */
        /* -------------------------------------------- */
        PDMA_GCR.PDSSR0().SPI1_RXSEL        =        0;
        //APB设备选择 PDMA 通道   SPI选择PDMA通道0 读操作

        //PDMA 通道0时钟使能   
        PDMA_GCR.GCRCSR().CLK0_EN = 1 ;
        PDMA0.CSR().PDMACEN = 1;                        //PDMA通道使能
        PDMA0.SAR = (uint32_t)&SPI1.RX0;                //PDMA 发送源地址寄存器  SPI1 Rx0
        PDMA0.DAR = (uint32_t)DestArray;        //PDMA 传输目的地址寄存器
        PDMA0.CSR()
             .SAD_SEL(0b10)                        //传输源地址固定(适用于单数据 传递到多目的地址)
             .DAD_SEL(0b00)                        //传输目的地址 持续增加
             .APB_TWS(0b01)                        // 一字节(8 bits)为单位传输 用于 PDMA 运作
             .MODE_SEL(0b01);                        //01 = IP到存储器模式 (APB-to-Memory).
        PDMA0.BCR = 256;                                        //PDMA 传输计数寄存器
        //配置PDMA通道0
       
       
    PDMA0.IER().BLKD_IE = 1;
        //使能PDMA通道0中断  中断源为:eDRVPDMA_BLKD(PDMA Transfer Done 中断使能)

    /* -------------------------------------------- */
    /* Configure PDMA Channel 1 to receive SPI1 Tx0 */
        /* -------------------------------------------- */
       
///        PDMA_GCR->PDSSR0.SPI1_TXSEL        = 1;
        PDMA_GCR.PDSSR0().SPI1_TXSEL        = 1;
        //APB设备选择PDMA通道   SPI选择PDMA通道1 写操作
///        PDMA_GCR->GCRCSR.CLK1_EN = 1 ;
        PDMA_GCR.GCRCSR().CLK1_EN = 1 ;
        PDMA1.SAR = (uint32_t)SrcArray;        //PDMA 发送源地址寄存器
///        PDMA1s.DAR.Regs = SPI1_BASE + 0x20;                //PDMA 传输目的地址寄存器
        PDMA1.DAR = (uint32_t)&SPI1.TX0;                //PDMA 传输目的地址寄存器 TX0
        PDMA1.CSR().SAD_SEL = 0b00;                        //传输源地址 持续增加
        PDMA1.CSR().DAD_SEL = 0b10;                        //传输目的地址不变
        PDMA1.CSR().APB_TWS = 0b01;                        // 一字节(8 bits)为单位传输 用于 PDMA 运作
        PDMA1.CSR().MODE_SEL= 0b10;                        //存储器到 IP 模式 (Memory-to-APB)
        PDMA1.BCR = 256;                                        //PDMA 传输计数寄存器
        //配置PDMA通道1
       
    PDMA1.IER().BLKD_IE = 1;

#endif

使用特权

评论回复
6
hotpower|  楼主 | 2011-7-6 21:52 | 只看该作者
#if LOOK_H == 0
        if (PDMA0s.ISR.Bits.BLKD_IF)
        {
                PDMA0s.ISR.Bits.BLKD_IF = 1;
                sem_pdma0.do_post();                        //释放一个信号量资源
        }
        if (PDMA1s.ISR.Bits.BLKD_IF)
        {
                PDMA1s.ISR.Bits.BLKD_IF = 1;
                sem_pdma1.do_post();                        //释放一个信号量资源
        }
#else
        if (PDMA0.ISR().BLKD_IF)
        {
                PDMA0.ISR().BLKD_IF = 1;
                sem_pdma0.do_post();                        //释放一个信号量资源
        }
        if (PDMA1.ISR().BLKD_IF)
        {
                PDMA1.ISR().BLKD_IF = 1;
                sem_pdma1.do_post();                        //释放一个信号量资源
        }
#endif
#if LOOK_H == 0
        while (SPI1s.CNTRL.Bits.GO_BUSY);

        SPI1s.TX0.Regs = *pu32Data;
        SPI1s.CNTRL.Bits.GO_BUSY = 1;
#else
        while (SPI1.CNTRL().GO_BUSY);

        SPI1.TX0 = *pu32Data;
        SPI1.CNTRL().GO_BUSY = 1;

#endif

使用特权

评论回复
7
hotpower|  楼主 | 2011-7-6 21:52 | 只看该作者
#if LOOK_H == 0
    SYSs.IPRSTC2.Bits.UART0_RST = 1;                //UART0 模块复位
    SYSs.IPRSTC2.Bits.UART0_RST = 0;                //UART0 模块正常工作
    UART0s.FCR.Bits.TFR = 1;                                //TX 软件复位
    UART0s.FCR.Bits.RFR = 1;                                //RX 软件复位
    UART0s.FCR.Bits.RFITL = 0x00;                        //Rx FIFO中断 (INT_RDA) 触发级别   1位
   
        UART0s.LCR.Bits.SPE = 0;                                //无校验  奇偶使能位
        UART0s.LCR.Bits.EPE = 0;                //  0----奇校验 1----偶校验
        UART0s.LCR.Bits.PBE = 0;                               
    UART0s.LCR.Bits.WLS = 0b011;                        //字长度选择 8bits
    UART0s.LCR.Bits.NSB = 0;                                //1位停止位
   
        UART0s.BAUD.Bits.BRD = 0x66;                        //外部12MHz 115200bps  对波特率分频寄存器的设置波特率分频设置即该句必须放在第一位
        UART0s.BAUD.Bits.DIV_X_EN = 1;                        //使能分频X
        UART0s.BAUD.Bits.DIV_X_ONE = 1;                        //Divider X equal 1

        UART0s.IER.Bits.RDA_IEN = 1;                        //使能接收中断
#else
    SYS.IPRSTC2().UART0_RST = 1;                //UART0 模块复位
    SYS.IPRSTC2().UART0_RST = 0;                //UART0 模块正常工作
    UART0.FCR()
             .TFR(1)                                //TX 软件复位
         .RFR(1)                                //RX 软件复位
         .RFITL(0x00);                        //Rx FIFO中断 (INT_RDA) 触发级别   1位
   
        UART0.LCR()
             .SPE(0)                                //无校验  奇偶使能位
             .EPE(0)                //  0----奇校验 1----偶校验
             .PBE(0)                               
         .WLS(0b011)                        //字长度选择 8bits
         .NSB(0);                                //1位停止位
   
        UART0.BAUD()
             .BRD(0x66)                        //外部12MHz 115200bps  对波特率分频寄存器的设置波特率分频设置即该句必须放在第一位
             .DIV_X_EN(1)                        //使能分频X
             .DIV_X_ONE(1);                        //Divider X equal 1

        UART0.IER().RDA_IEN = 1;                        //使能接收中断
#endif

使用特权

评论回复
8
Swallow_0322| | 2011-7-7 07:46 | 只看该作者
o(∩_∩)o 哈哈 够暴力!:victory:

使用特权

评论回复
9
hotpower|  楼主 | 2011-7-7 10:34 | 只看该作者
老师的头文件在cortex包里include目录下的nuvoton.h,实现方法在sfr.h。

使用特权

评论回复
10
murex| | 2011-7-7 22:42 | 只看该作者
实在是太暴力了

使用特权

评论回复
11
hotpower|  楼主 | 2011-7-7 23:17 | 只看该作者
在一条命令里连续进行位操作,确实很暴力

使用特权

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

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1538

主题

21697

帖子

505

粉丝