/**********************************************************************
*
* 实验名称:FGPIO端口数据输出切换实验
* 实验平台:NV32开发板
* 板载芯片:NV32F101FL64E
* 实验效果:PB2引脚为输出引脚,切换PB2数据输出,可测量PB2输出波形的周期
* 最大可达到内核时钟频率的1/2
*
************************************************************************/
/******************************************************************************
* 注:要使输出波形接近内核时钟的1/2,需要设置C编译器的优化等级
*******************************************************************************/
#include "common.h"
#include "rtc.h"
#include "gpio.h"
#include "sim.h"
#include "sysinit.h"
#include "start.h"
int main (void);
void gpio_t(void);
/********************************************************************/
int main (void)
{
/*系统初始化*/
sysinit();
cpu_identify();
printf("\nRunning the GPIO_OneCycle_demo project.\r\n");
printf("\nBy default Core Clock is 48MHz.\r\n");
printf("\nBy one cycle GPIO access, PTB2 output frequency is expected to be 24MHz.\r\n");
/* 使能总线时钟在PH2上 */
SIM_EnableClockOutput();
/* 配置PB2为输出引脚*/
GPIO_Init(GPIOA, GPIO_PTB2_MASK, GPIO_PinOutput);
/* PB2输出为 0 */
GPIO_PinClear(GPIO_PTB2);
gpio_t();
}
void gpio_t(void)
{
for(;;)
{
/* 通过FastGPIO切换PB2输出, 输出波形的频率= 内核时钟/2 */
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
FGPIO_Toggle(FGPIOA, GPIO_PTB2_MASK);
}
}
/*****************************************************************************/
|