打印
[新手园地]

【第三批】学习笔记4:半主机调试ADC采集结果(NEW)

[复制链接]
3133|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
564451696|  楼主 | 2011-10-21 07:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在库V1.05.002版本下,实现半主机调试,可以不用串口通道实现串口功能,非常好用,在此感谢9哥和烈火狂龙提供的帖子。本人实现半主机调试修改两处:1.在startup_NUC1xx.s文件第10行“SEMIHOSTED       SETL    {FALSE}”修改为“SEMIHOSTED       SETL    {TRUE}”;
                                       2.在retarget.c文件下,在第21行处添加
#define DEBUG_ENABLE_SEMIHOST   /* To enable semihosted. !!!The SEMIHOSTED of startup_NUC1xx.s must be {TRUE} */

/* Using UART0 or UART1 */  
#define DEBUG_PORT   0
    /*0:UART0  1:UART1 2:UART2 */
PS:经本人调试成功,忘记截图。
/*********************************************************************************************
*                    菜农新唐M0助学交流(Q群:12047788)
* 模块名称:定时器中断的使用
* 创建时间:2011-10-20
* 所属公司 : 火星菜农集团
* 文件名称:         Main.c
* 作者 :  周炳权
* 功能描述:        按KEY2进入中断驱动蜂鸣器;按KEY2进入,点亮流水灯驱动蜂鸣器。
                        定时器0关蜂鸣器(500ms)
*----------------------------------------------------------------
修改记录:

修改日期:

修改人:

**********************************************************************************************************/

#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
#include "DrvTIMER.h"
#include "DrvADC.h"
#include "DrvUART.h"
uint32_t uTimerEventNo[4];
/********************************************************************
*@作者:周炳权
*@功能:外部中断0回调函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void EINT0CALLBACK( void )
{
        DrvGPIO_SetBit( E_GPB, 10);
        return;
}
/********************************************************************
*@作者:周炳权
*@功能:外部中断0回调函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void TMR0_Callback( void )
{
       
        DrvGPIO_ClrBit( E_GPB, 10);
        return;
}
/********************************************************************
*@作者:周炳权
*@功能:流水灯函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void LED_Gilde( void )
{
        DrvGPIO_ClrBit( E_GPA, 2);
        DrvSYS_Delay(50000);
        DrvGPIO_SetBit( E_GPA, 2);
    DrvSYS_Delay(50000);
        DrvGPIO_ClrBit( E_GPA, 3);
        DrvSYS_Delay(50000);
        DrvGPIO_SetBit( E_GPA, 3);
        DrvSYS_Delay(50000);
        DrvGPIO_ClrBit( E_GPA, 4);
        DrvSYS_Delay(50000);
        DrvGPIO_SetBit( E_GPA, 4);
        DrvSYS_Delay(50000);
        DrvGPIO_ClrBit( E_GPA, 5);
        DrvSYS_Delay(50000);
        DrvGPIO_SetBit( E_GPA, 5);
        DrvSYS_Delay(50000);
        DrvGPIO_SetBit( E_GPB, 10);
        return;
}
/********************************************************************
*@作者:周炳权
*@功能:系统初始化函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void SYS_Init( void )
{
        UNLOCKREG(x);                                                 /*芯片注册解锁*/
        SYSCLK->PWRCON.XTL12M_EN =1;                 /*设定12M外部晶振*/
//        LOCKREG(x);                                                         /*芯片上锁*/

        DrvSYS_Delay(5000);                                         /*等待时钟就绪*/

        DrvTIMER_Init();                                         /*初始化定时器*/

        DrvSYS_SelectIPClockSource(E_SYS_TMR0_CLKSRC, 0);          /*选择定时器时钟源为外部12MHz*/
    DrvSYS_SelectIPClockSource(E_SYS_TMR1_CLKSRC, 0);
    DrvSYS_SelectIPClockSource(E_SYS_TMR2_CLKSRC, 0);
    DrvSYS_SelectIPClockSource(E_SYS_TMR3_CLKSRC, 0);

        DrvGPIO_Open( E_GPA, 2, E_IO_OUTPUT);/*设置端口GPA2为输出模式*/
        DrvGPIO_Open( E_GPA, 3, E_IO_OUTPUT);/*设置端口GPA3为输出模式*/
        DrvGPIO_Open( E_GPA, 4, E_IO_OUTPUT);/*设置端口GPA4为输出模式*/
        DrvGPIO_Open( E_GPA, 5, E_IO_OUTPUT);/*设置端口GPA5为输出模式*/
        DrvGPIO_Open( E_GPB, 15, E_IO_INPUT);/*设置端口GPB15为输入模式*/
        DrvGPIO_Open( E_GPB, 14, E_IO_INPUT);/*设置端口GPB14为输入模式*/
        DrvGPIO_Open( E_GPB, 10, E_IO_OUTPUT);/*设置端口GPB10为输出模式*/
        DrvGPIO_ClrBit( E_GPB, 10);                        /*禁止蜂鸣器工作*/

        DrvGPIO_EnableInt( E_GPB, 14, E_IO_FALLING, E_MODE_EDGE);        /*设置端口GPB14为外部中断模式*/
        DrvGPIO_SetDebounceTime(10, E_DBCLKSRC_10K);   
    DrvGPIO_EnableDebounce(E_GPB, 14);
        DrvGPIO_InitFunction( E_FUNC_EXTINT0);                 /*指定外部中断0引脚功能*/
        DrvGPIO_EnableEINT0( E_IO_FALLING, E_MODE_EDGE, EINT0CALLBACK);

        DrvTIMER_Open(E_TMR0, 2, E_PERIODIC_MODE);        /*500ms,周期模式*/
        uTimerEventNo[0] = DrvTIMER_SetTimerEvent(E_TMR0, 2, (TIMER_CALLBACK)TMR0_Callback, 0);  /*设置定时处理事件*/
        DrvTIMER_EnableInt(E_TMR0); /*使能定时器0中断*/
        DrvTIMER_Start(E_TMR0);          /*开始计数*/

        return;
}
/********************************************************************
*@作者:周炳权
*@功能:ADC初始化函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void ADC_Init( void )
{
        DrvGPIO_InitFunction( E_FUNC_ADC1 );   /*初始化ADC1功能*/
        DrvADC_Open( ADC_SINGLE_END, ADC_CONTINUOUS_OP,
                                0x02, EXTERNAL_12MHZ, 5);  /*使能ADC功能并完成相关设定*/
        return;
}
/********************************************************************
*@作者:周炳权
*@功能:ADC初始化函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void UART_Init( void )
{
        STR_UART_T param;
               
        DrvSYS_SelectIPClockSource(E_SYS_UART_CLKSRC, 0);                         //         enable the UART`s clock
        DrvGPIO_InitFunction(E_FUNC_UART0);                                                         //         set the multiplex pin to UART
       
    param.u32BaudRate        = 115200;                                                         //         baud rate
    param.u8cDataBits        = DRVUART_DATABITS_8;                                 //         data bit
    param.u8cStopBits        = DRVUART_STOPBITS_1;                                 //         stop bit
    param.u8cParity          = DRVUART_PARITY_NONE;                                 //         test bit
    param.u8cRxTriggerLevel  = DRVUART_FIFO_1BYTES;                                 //         depth of FIFO`s store
    param.u8TimeOut                 = 0;                                                                 //         FIFO time-over setting
    DrvUART_Open(UART_PORT0, &param);                                                         //         open the UART
        return;
}
/********************************************************************
*@作者:周炳权
*@功能:主函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
void ADC_OUTPUT_Display( uint32_t r_adc_data )
{
        uint8_t Display_Buffer[] = "当前电压:0.00V\r\n";
        r_adc_data = r_adc_data * 330 / 4095;                          //system supply 3.3V, and the precision is 12 bits.
        Display_Buffer[9] = r_adc_data / 100 + '0';
        Display_Buffer[11] = r_adc_data / 10 % 10+'0';
        Display_Buffer[12] = r_adc_data % 10 + '0';

        DrvUART_Write(UART_PORT0, Display_Buffer, 18);//真实串口输出数据
        printf(Display_Buffer);//半主机调试信息输出
}
/********************************************************************
*@作者:周炳权
*@功能:主函数
*
*@输入:          NONE
*@输出:        NONE
********************************************************************/
int main( void )
{
        SYS_Init();
        ADC_Init();
        UART_Init();

        DrvADC_StartConvert();

        printf("\n\r\n\r");
        printf("************************************\n\r");
        printf("        菜农新唐M0助学交流学习笔记                \n\r");
        printf("        学习笔记4:半主机调试ADC                \n\r");
        printf("        愛新覺羅 權-->21icID:564451696        \n\r");
        printf("        ("__DATE__" -- "__TIME__")                \n\r");
        printf("************************************\n\r");

        while(1)
        {
                if(DrvGPIO_GetBit( E_GPB, 15) == 0)
                {
                        LED_Gilde();
                }
       
                ADC_OUTPUT_Display( DrvADC_GetConversionData(1) );
                DrvSYS_Delay( 500000 );
        }

}

The Fourth Project.rar

1.36 MB

相关帖子

沙发
564451696|  楼主 | 2011-10-21 08:26 | 只看该作者
具体软件设置和窗口显示请参考烈火狂龙的帖子https://bbs.21ic.com/viewthread.p ... A%E8%B0%83%E8%AF%95
本人不再重复表述。

使用特权

评论回复
板凳
ichuangj| | 2011-10-23 15:34 | 只看该作者
如何做半主机调试?有哪些优点?

使用特权

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

本版积分规则

个人签名:Stay hungry,stay foolish.

1

主题

157

帖子

0

粉丝