سلام
برای اینکه حد اکثر فرکانس خروجی یک gpio مثلا GPIOE رو اندازه بگیرم اول برنامه رو به این صورت نوشتم:
کد:
#define s_pin GPIO_SetBits( GPIOE, GPIO_Pin_15 );
#define r_pin GPIO_ResetBits( GPIOE, GPIO_Pin_15 );
و در یک حلقه while
کد:
while(1)
{
s_ds;
r_ds;
}
در این حالت حداکثر فرکانسی گه گرفتم 5.5 مگ بود.
اومدم برنامه رو به این صورت تغییر دادم:
کد:
#define s_pin GPIOE->BSRRL = 0x1000;
#define r_pin GPIOE->BSRRH = 0x1000;
فرکانس خروچی شد 10.5 مگ، ولی بازهم کمه ، راه دیگه ای هست که فرکانس بالاتر بره؟
تنظیمات GPIO
کد:
void gpio_cfg()
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}