GPIO翻转实验

一、实验目的

测量GPIO反转的最高速率及过冲、延迟、抖动等参数

二、代码思路

设置CMU的系统时钟为PLL44M,同时也设置CLKOUT时钟为系统时钟,这样可借用CLKOUT查看是否设置成功,最后再反转PA口

int main()
{
	HT_CMU->WPREG = 0xA55A;  //向写保护寄存器中写入0xA55A打开写保护功能
	HT_GPIOA->HIIPM;  
	HT_GPIOB->HIIPM;  
	HT_GPIOC->HIIPM;  
	HT_GPIOD->HIIPM;  
	
	HT_GPIOE->HIIPM;     	//关闭高阻状态

	HT_CMU->WPREG = 0xA55A;  
	HT_CMU->SYSCLKDIV |= CMU_SYSCLKDIV_SEL40M;   //PLL输出预分频设成PLL输出为44M
	HT_CMU->SYSCLKDIV |= CMU_CPUCLKDIV_1;    	// cpu时钟分频设置,给cpu、GPIO、DMA、CRC提供时钟
	HT_CMU->PREFETCH |= 0x10000;				
	HT_CMU->CLKCTRL0 |= CMU_CLKCTRL0_PLLEN;   	//使能锁相环时钟PLL
	Delay_ms(3000);
	HT_CMU->SYSCLKCFG |= 0x83;
	Delay_ms(3000);
	
	HT_CMU->WPREG = 0xA55A;  
	HT_CMU->CLKOUTSEL = CMU_CLKOUTSEL_SYS;   //clkout选择系统时钟
	HT_CMU->CLKOUTDIV &= 0x00;				//分频,默认2分频
	HT_CMU->CLKCTRL0 |= 0x1000;    			// 使能clkout
	HT_GPIOE->IOCFG |= 0x00000000;  		 //PE3复用成clkout输出
	HT_GPIOE->AFCFG &= ~0x08;   
	HT_GPIOE->AFCFG1 &= 0x08;
	
	HT_GPIOA->IOCFG = 0x00000000;			//PA配置成推完输出
	HT_GPIOA->PTDIR = 0xFFFFFFFF;
	HT_GPIOA->PTOD = 0xFFFFFFFF;
	while(1)
	{
		for(i = 0; i < 16; i ++)
		{
			ioread = HT_GPIOA->PTDAT;
			ioset = ioread | (1 << a);
			ioreset = ioread & ~ (1 << a);
			HT_GPIOA->PTDAT = ioset;
			HT_GPIOA->PTDAT = ioreset;
		}
	}

	
} 

三、实验结果

clkout默认是2分频,因此clkout输出为22MHZ

测试出GPIOA输出最高频率为3.68MHz

延迟参数包括上翻时间和下翻时间:
上翻时间:0.1VCC~0.9VCC经过的时间

下翻时间:0.9VCC~0.1VCC经过的时间

负向过冲电压:最大过冲和3.3V比较

正向过冲电压:最大过冲和0V比较

最大的凹陷,可结合最大过冲计算出电源抖动的MAX:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值