【新版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.这样开发环境测试通过。
提醒一下,这个芯片的内部的ROM Flash只能擦写200次左右,这种例程玩多了之后可能无法下载了。 mars4zhu 发表于 2018-4-4 15:11
提醒一下,这个芯片的内部的ROM Flash只能擦写200次左右,这种例程玩多了之后可能无法下载了。
感觉这点比较坑{:1_104:} 哈哈,我也刚想提醒楼主 只能烧写200次左右。估计楼主用掉20次了吧?
我的板子刚到,还是先看资料再开始动手。 mig29ee 发表于 2018-4-4 15:35
哈哈,我也刚想提醒楼主 只能烧写200次左右。估计楼主用掉20次了吧?
我的板子刚到,还是先看资料再开始 ...
:pleased:
谢谢。这还没开始DIY呢。要是参数没错,我应该会刷爆几个。
不过,通常这个是一个保证参数。200以内没问题,刷400个大多数也不会出问题,所以,放心去用吧。
{:1_99:}太离谱了 :handshake
页:
[1]