最近对STM32 GPIO的输出端高低电平变化速率产生兴趣,于是用我所知道的控制GPIO的不同方法做了测试。
单片机CPU:STM32F103ZET6
软件平台:kEIL MDK
从图中看出,最快的是
GPIOA ->ODR = 0x1; GPIOA ->ODR = 0x0;
和 PA0 = 0x01;PA0 = 0x00;
和 GPIOA ->BSRR = 0x01; GPIOA ->BRR = 0x01;
转换周期是220ns,4.55Mhz
最慢的是 *PAO0 = !*PAO0 ; 和 PA0 =!PA0; 取反操作浪费不少时间
转换周期是900ns 1.11Mhz
用位绑定函数操作最方便,速度稍微慢一点,是320ns,见最后一张图
如果有更快的操作方法请指教。
单片机CPU:STM32F103ZET6
软件平台:kEIL MDK
逻辑分析仪:金沙滩 LA2016
从图中看出,最快的是
GPIOA ->ODR = 0x1; GPIOA ->ODR = 0x0;
和 PA0 = 0x01;PA0 = 0x00;
和 GPIOA ->BSRR = 0x01; GPIOA ->BRR = 0x01;
转换周期是220ns,4.55Mhz
最慢的是 *PAO0 = !*PAO0 ; 和 PA0 =!PA0; 取反操作浪费不少时间
转换周期是900ns 1.11Mhz
用位绑定函数操作最方便,速度稍微慢一点,是320ns,见最后一张图
如果有更快的操作方法请指教。