TA的每日心情 | 奋斗 2020-5-27 15:41 |
---|
签到天数: 868 天 连续签到: 1 天 [LV.10]以坛为家III
|
一、学习gpio例程
ADI EVAL-ADuCM360QSPZ开发套件DVD光盘里带有10多个例程。通过例程可以快速上手,便于开发。
1.打开KEIL。
2.打开C:\ADuCMxxxV1.3\code\ADuCM360\examples\Blink下的Blink.uvprojx工程。可以看到keil的标题栏里的显示打开的工程路径。
从上图可以看到本例程使用了5个库文件,在文件的开头都有详细的注释。
应用文件代码如下
#include <stdio.h>#include <string.h>#include <ADuCM360.h>#include <..\common\ClkLib.h>#include <..\common\IntLib.h>#include <..\common\DioLib.h>#include <..\common\WdtLib.h>#include <..\common\DioLib.h>void delay(long int);int main (void){ WdtCfg(T3CON_PRE_DIV1,T3CON_IRQ_EN,T3CON_PD_DIS); // Disable Watchdog timer resets DioOen(pADI_GP1,0x8); // Set P1.3 as an output to toggle the LED //Disable clock to unused peripherals ClkDis(CLKDIS_DISSPI0CLK|CLKDIS_DISSPI1CLK|CLKDIS_DISI2CCLK|CLKDIS_DISUARTCLK|CLKDIS_DISPWMCLK|CLKDIS_DIST0CLK|CLKDIS_DIST1CLK|CLKDIS_DISDACCLK|CLKDIS_DISDMACLK|CLKDIS_DISADCCLK); ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG); // Select CD0 for CPU clock - 16Mhz clock while (1) { DioTgl(pADI_GP1,0x8); // Toggle P1.3 delay(0x60000); // Delay routine }}// Simple Delay routinevoid delay (long int length){ while (length >0) length--;}void WakeUp_Int_Handler(void){ }void Ext_Int2_Handler (){ }void Ext_Int4_Handler (){ }void GP_Tmr0_Int_Handler(void){}void GP_Tmr1_Int_Handler(void){ }void ADC0_Int_Handler(){ }void ADC1_Int_Handler (){}void SINC2_Int_Handler(){ }void UART_Int_Handler (){} void I2C0_Slave_Int_Handler(void) {}void PWMTRIP_Int_Handler (){ }void PWM0_Int_Handler(){}void PWM1_Int_Handler (){ }void PWM2_Int_Handler(){ }在main函数中,通过1.失能看门狗定时器2.设置gpio引脚功能3.失能不用的外设4.设置系统时钟 简单的几步, 然后在循环体内加入翻转gpio端状态函数和一个延时函数,就实现了开发板led灯闪烁。
看门狗定时器在系统复位后默认为使能。如果不用,需要在代码的前面先失能它。
led的连接原理图如下:
gpio引脚功能的设置可以通过查看DioLib.c的编写,也可以使用套件提供的函数代码生成器生成。使用工具更方便直观,而且不容易出错。
双击C:\ADuCMxxxV1.3\Software Tools\Elves下的Elves.exe
可以把使用的的库如上图一样全部添加,然后在第一个下拉列表框选择需要的。
选择参数栏可以根据上面的source里的详细说明选择适合的,没有下拉列表的直接根据说明填上,然后复制代码到程序中。
DioOen(pADI_GP1,0x8);
同上,把所有外设时钟失能,这个选项只能使用逻辑或把不需要的外设选上。
ClkDis(|CLKDIS_DISSPI0CLK| CLKDIS_DISSPI1CLK| CLKDIS_DISI2CCLK| CLKDIS_DISUARTCLK| CLKDIS_DISPWMCLK| CLKDIS_DIST0CLK| CLKDIS_DIST1CLK| CLKDIS_DISDACCLK| CLKDIS_DISDMACLK| CLKDIS_DISADCCLK);
配置系统时钟,使用工具,根据参数设置好后,把代码拷贝下来。
ClkCfg(CLK_CD0,CLK_HF,CLKSYSDIV_DIV2EN_DIS,CLK_UCLKCG);
只要在循环体内+个函数,使P1.3管脚的状态不断变化就实现了闪烁。
同样使用工具,拷贝代码DioTgl(pADI_GP1,0x8);
只需几步,就能实现gpio的使用,傻瓜式的工具,的确是开发项目的好帮手。
|
|