本帖最后由 181wh 于 2016-4-23 09:54 编辑
感谢ST官方和21IC举办这次活动,并有幸得到到GD32 Colibri-F207ZE板,进行了测试,测试还在继续进行,报告还会继续更新。
1.测试目的:
1.1测试Modbus在GD32F207ZE板上的应用;
1.2 测试GD32F207ZE在开发环境KEIL的适应性。
2.测试环境:
2.1硬件:
2.1.1 GD32 Colibri-F207ZE板;
2.1.2 小口USB线(下载兼供电);
2.1.3 笔记本电脑;
2.2软件:
2.2.1 Win7(64位)操作系统;
2.2.2 MDK5.16A;
2.2.3KEPServrExV4.0;
2.2.4 基于Modbus的应用测试软件;
3.测试情况:
3.1 串口—Uart1;
3.2 输出口—PE0、PE1、PE2、PE3(开关量输出);
3.3 输入口—PD14、PD15(KEY1、KEY2蓝按键);
3.4 AD接口—外部模拟量输入PC0(CH10)、PC2(CH12)、PC3(CH13)、PF6(CH4)、PF7(CH5)、PF8(CH6)、;
3.5 PWM输出—PA5;
3.6 TIM2(1ms定时中断);
测试用程序:
1.主程序
int main(void)
{
/* 配置评估板*/
EvbSetupBoard();
SysTickConfig();
GPIO_Config();
Adc_Init();
Dac2_Init();
EvbLedControl(LED3,LED_ON); //receEnable
localAddr = 0x01; //设置地址为01
while(1)
{
timeProc();
checkComm0Modbus();
if((Register_coil[0] & 0x0001) == 1) //PE.0
GPIO_SetBits(GPIOE,GPIO_PIN_0);
else GPIO_ResetBits(GPIOE,GPIO_PIN_0);
if((Register_coil[0] & 0x0002) == 2) //PE.1
GPIO_SetBits(GPIOE,GPIO_PIN_1);
else GPIO_ResetBits(GPIOE,GPIO_PIN_1);
if((Register_coil[0] & 0x0004) == 4) //PE.2
GPIO_SetBits(GPIOE,GPIO_PIN_2);
else GPIO_ResetBits(GPIOE,GPIO_PIN_2);
if((Register_coil[0] & 0x0008) == 8) //PE.3
GPIO_SetBits(GPIOE,GPIO_PIN_3);
else GPIO_ResetBits(GPIOE,GPIO_PIN_3);
if(GPIO_ReadInputBit(GPIOD, GPIO_PIN_14) == 1) //PD.14
H_SET_BIT(Register_coil[1],00);
else
H_CLR_BIT(Register_coil[1],00);
if(GPIO_ReadInputBit(GPIOD, GPIO_PIN_15) == 1) //PD.15
H_SET_BIT(Register_coil[1],01);
else
H_CLR_BIT(Register_coil[1],01);
Dac2_Set_Vol(Register_ram[8]);
Register_ram[10] = Get_Adc(10);
Register_ram[11] = Get_Adc(12);
Register_ram[12] = Get_Adc(13);
Register_ram[13] = Get_Adc3(4);
Register_ram[14] = Get_Adc3(5);
Register_ram[15] = Get_Adc3(6);
}
}
2.ADC设置程序
void Adc_Init(void)
{
ADC_InitPara ADC_InitStructure;
GPIO_InitPara GPIO_InitStructure;
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOC | RCC_APB2PERIPH_ADC1, ENABLE );
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOF | RCC_APB2PERIPH_ADC3, ENABLE );
RCC_ADCCLKConfig(RCC_ADCCLK_APB2_DIV6);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_Init(GPIOF, &GPIO_InitStructure);
ADC_InitStructure.ADC_Mode = ADC_MODE_INDEPENDENT;
ADC_InitStructure.ADC_Mode_Scan = DISABLE;
ADC_InitStructure.ADC_Mode_Continuous = DISABLE;
ADC_InitStructure.ADC_Trig_External = ADC_EXTERNAL_TRIGGER_MODE_NONE;
ADC_InitStructure.ADC_Data_Align = ADC_DATAALIGN_RIGHT;
ADC_InitStructure.ADC_Channel_Number = 2;
ADC_Init(ADC1, &ADC_InitStructure);
ADC_Init(ADC3, &ADC_InitStructure);
ADC_Enable(ADC1,ENABLE);
ADC_Calibration(ADC1);
ADC_Enable(ADC3,ENABLE);
ADC_Calibration(ADC3);
3.DAC设置程序
void Dac2_Init(void)
{
GPIO_InitPara GPIO_InitStructure;
DAC_InitPara DAC_InitType;
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA, ENABLE);
RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_DAC, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_5;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
DAC_InitStructure.DAC_Trigger=DAC_TRIGGER_NONE;
DAC_InitType.DAC_WaveType=DAC_WAVEGENE_NONE;
DAC_InitType. DAC_LFSRNoise_AmplitudeTriangle=DAC_LFSR_BIT0;
DAC_InitType.DAC_OutputBuffer=DAC_OUTPUTBUFFER_DISABLE;
DAC_Init(DAC_CHANNEL_2,&DAC_InitType);
DAC_DMA_Enable(DAC_CHANNEL_2, ENABLE);
DAC_SetChannel2Data(DAC_ALIGN_12B_R, 0);
DAC_Enable(DAC_CHANNEL_2,ENABLE);
}
4.GPIO设置程序
void GPIO_Config(void)
{
GPIO_InitPara GPIO_InitStructure;
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUT_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3;
GPIO_Init(GPIOE,&GPIO_InitStructure);
RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOD,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_14 | GPIO_PIN_15 ;
GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
GPIO_Init(GPIOE,&GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_14 | GPIO_PIN_15;
GPIO_Init(GPIOE,&GPIO_InitStructure);
}
|