本帖最后由 zeshoufx 于 2019-7-10 10:54 编辑
一、时钟输出函数
#include "clkout.h"
void clkout_init(u8 clk)
{
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA,GPIO_MODE_AF_PP,GPIO_OSPEED_MAX,GPIO_PIN_8);
if(0==clk)
{
rcu_ckout0_config(RCU_CKOUT0SRC_IRC8M);
}
else if(1==clk)
{
rcu_ckout0_config(RCU_CKOUT0SRC_HXTAL);
}
else if(2==clk)
{
rcu_ckout0_config(RCU_CKOUT0SRC_CKPLL_DIV2);
}
else
{
rcu_ckout0_config(RCU_CKOUT0SRC_CKSYS);
}
}
主函数,输出系统时钟
#include "bitband.h"
#include "sysdelay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "clkout.h"
int main(void)
{
u8 i;
sysdelay_init(120);
nvic_priority_group_set(NVIC_PRIGROUP_PRE2_SUB2);
usart0_init(56000);
led_init();
clkout_init(3);
while(1)
{
i++;
if(i%20==0)
{
led1=!led1;
}
delay_ms(25);
}
}
二、结果
三、结论
结论:利用示波器观察,当输出频率设置为系统频率(120MHz)时,并且io输出速度设置为最大时,示波器发现时钟输出也为120MHz,即IO口的最大速度和系统时钟速度匹配。并且发现IO口输出频率极其稳定。因此在设计开发中,将io输出速率设置为最大,可得到较高的性能,但也可能造成功耗的增加;相比较STM32F407及AT32F407等IO输出频率,,,GD32F303的最大输出频率比前两者要高。
|