【国民技术M4内核热销款N32G45XVL评估】第二篇 IO口复用配置及IO输出频率评估
[复制链接]
一、IO口复用配置
打开例程LedBlink。
N32G45XVL-STB板上D1/D2/D3三颗LED分别由PA8/PB4/PB5控制。
在main.h中,按照上面电路修改IO端口分配:
#define PORT_GROUP1 GPIOA
#define PORT_GROUP2 GPIOB
#define LED1_PORT PORT_GROUP1
#define LED2_PORT PORT_GROUP2
#define LED3_PORT PORT_GROUP2
程序编译和下载后,LED1和LED3正常闪烁;但LED2没有按照预想进行闪烁。
查手册,发现PB4管脚复位后功能为JTAG接口的NJTRST信号,GPIO是只是此管脚的复位功能。应该要先将此管脚配置为复用功能(GPIO)才行。
增加以下代码,将PB4配置为IO口功能。
GPIO_InitType GPIO_InitStructure;
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOB, ENABLE);
GPIO_ConfigPinRemap(GPIO_RMP_SW_JTAG_DISABLE, ENABLE);
GPIO_InitStructure.Pin = GPIO_PIN_4;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(GPIOB, &GPIO_InitStructure);
修改完后,再编译运行,LED2也能正常显示了。
二、 IO口输出频率评估
选择PC6作为测试IO口。
系统时钟选择PLL输出,设置为最高的144MHz。
注意:使用内部时钟HSI最高只能到128MHz。只有使用外部时钟,才能达到最高的144MHz。
GPIO_InitType GPIO_InitStructure;
Delay(0x28FFFF*4);
SetSysClockToPLL(144000000, SYSCLK_PLLSRC_HSE);
RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOC, ENABLE);
GPIO_InitStructure.Pin = GPIO_PIN_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitPeripheral(GPIOC, &GPIO_InitStructure);
使用下面代码不断切换IO口输出电平。
while(1){
GPIOC->POD = 0x00000040;
GPIOC->POD = 0x0000FFBF;
}
使用示波器测量PC6的输出信号频率,为14.4MHz。
下面分析一下测到的这个频率是否合理。
当系统时钟为144MHz时,Flash Lantency需要设置为4。Flash访问速度受限,测到的14.4MHz应该是合理的。
|