需求:IO产生最快的翻转脉冲。
结论:最快速度5MHz.
第一次尝试:
IRC使能16M,不分频。
IO设置为推挽高速输出。
While(1)死循环翻转。
代码如下:
void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //16M
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
while(1)
{
GPIO_WriteReverse(GPIOD, GPIO_PIN_3);
}
}
实际波形如下:
结果是只有463KHz,达不到要求。
反思是有一层函数调用的原因,没有及时翻转。
第二次尝试:
把函数去掉直接操作。
代码如下:
void main(void)
{
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //16M
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_SLOW);
while(1)
{
GPIOD->ODR ^= (uint8_t