北方 发表于 2018-4-4 14:44

【新版CH554评测DIY】音频校音器之5

音频校音器之5——程序编译和测试
1、根据范例程序可以逐个如上述方式创建工程,编译并测试运行。
2、首先是ADC
在CH554中,共有4个ADC通道,是AIN0-3,对应着引脚1,2,3,11。在开发板上是P10,P11,P12。
然后创建工程,编译程序,下载生成hex文件,

然后启动串口调试器,显示对各个通道轮询的结果,

参考代码
#include "..\Public\CH554.H"                                                
#include "..\Public\Debug.H"
#include "ADC.H"
#include "stdio.h"
#include <string.h>

#pragmaNOAREGS

void main( )
{
    UINT16 i;
    UINT16 j = 0;
    CfgFsys( );                                                                //CH554时钟选择配置   
    mDelaymS(20);
    mInitSTDIO( );                                                             //串口0初始化
    printf("start ...\n");

    ADCInit( 0 );                                                            //ADC时钟配置,0(96clk) 1(384clk),ADC模块开启       

#if ADC_INTERRUPT                                                            //ADC中断方式
    EA = 1;
    while(1)                                                                  
    {
      for(i=0;i<4;i++){       
      printf("AIN%02x ",(UINT16)i);                                                           //ADC采样通道打印显示,调试用       
      ADC_ChannelSelect( i );                                                //ADC采样电源开启和通道设置,i(0-3)表示采样通道
      ADC_START = 1;                                                         //开始采样,采样完成进入中断
      mDelayuS(30);                                                          //等待采集完成才能切换至下一通道
      }
    }
#else       
    while(1)                                                                   //ADC 查询方式                                                                  
    {
      for(i=0;i<4;i++){                               
      printf("AIN%02x ",(UINT16)i);               
      ADC_ChannelSelect( i );                                                //ADC采样初始化
      ADC_START = 1;                                                         //开始采样,采样完成进入中断
      while(ADC_START);                                                      //ADC_START变为0时,表示采样完成
      printf("DATA: %02x\n",(UINT16)ADC_DATA);
      mDelaymS(100);                                                         //模拟单片机干其他事
      }       
    }               
#endif               
}


3、然后测试GPIO程序,
在串口调试器显示,每个循环一个‘.’

开发板的LED0和LED1闪烁,

参考代码,
#include "..\Public\CH554.H"                                                   
#include "..\Public\Debug.H"
#include "GPIO.H"
#include "stdio.h"
#include <string.h>

#pragmaNOAREGS

sbit LED0 = P1^6;
sbit LED1 = P1^7;

void main( )
{
    UINT16 j = 0;
    CfgFsys( );                                                                //CH554时钟选择配置   
    mDelaymS(20);
    mInitSTDIO( );                                                             //串口0初始化
    printf("start ...\n");
    Port1Cfg(1,6);                                                             //P16设置推挽模式
    Port1Cfg(1,7);                                                             //P17设置推挽模式
    LED0 = 0;
    LED1 = 0;       

    GPIOInterruptCfg();                                                      //GPIO中断配置函数       
    EA = 1;
    printf("Run");
    while(1){
      printf("*");
      LED0 = ~LED0;
      LED1 = ~LED1;                       
      mDelaymS(100);                       
    }
}


4.这样开发环境测试通过。

mars4zhu 发表于 2018-4-4 15:11

提醒一下,这个芯片的内部的ROM Flash只能擦写200次左右,这种例程玩多了之后可能无法下载了。

Veiko 发表于 2018-4-4 15:30

mars4zhu 发表于 2018-4-4 15:11
提醒一下,这个芯片的内部的ROM Flash只能擦写200次左右,这种例程玩多了之后可能无法下载了。

感觉这点比较坑{:1_104:}

mig29ee 发表于 2018-4-4 15:35

哈哈,我也刚想提醒楼主 只能烧写200次左右。估计楼主用掉20次了吧?

我的板子刚到,还是先看资料再开始动手。

北方 发表于 2018-4-4 15:51

mig29ee 发表于 2018-4-4 15:35
哈哈,我也刚想提醒楼主 只能烧写200次左右。估计楼主用掉20次了吧?

我的板子刚到,还是先看资料再开始 ...

:pleased:
谢谢。这还没开始DIY呢。要是参数没错,我应该会刷爆几个。
不过,通常这个是一个保证参数。200以内没问题,刷400个大多数也不会出问题,所以,放心去用吧。

huo_hu 发表于 2018-4-4 16:21

{:1_99:}太离谱了

沁恒USB单片机 发表于 2018-4-14 17:32

:handshake
页: [1]
查看完整版本: 【新版CH554评测DIY】音频校音器之5