样板芯片是SAM4S16C,使用的是ASF中的测试程序 Low Power Demo for SAM boards-SAM4S Xplained Pro。看右边图片,与我的板子有一点点区别,并且它的板载芯片是 SAM4SD32C。
首先由几个地方要根据实际情况修改一下。第一个是按键,我的板子上按键是PA5,示例程序按键是PA2,所以需要修改按键的宏定义,在 sam4s_xplained_pro.h 文件中有两处:
- //! \name SW0 definitions
- //@{
- #define SW0_PIN IOPORT_CREATE_PIN(PIOA, 5)
- #define SW0_ACTIVE false
- #define SW0_INACTIVE !SW0_ACTIVE
- #define SW0_SUPC_INPUT 2
- //@}
这里 #define SW0_SUPC_INPUT 2 在程序中没有用到,我也就没有修改。
- #define PIN_PUSHBUTTON_0_MASK PIO_PA5
- #define PIN_PUSHBUTTON_0_PIO PIOA
- #define PIN_PUSHBUTTON_0_ID ID_PIOA
- #define PIN_PUSHBUTTON_0_TYPE PIO_INPUT
- #define PIN_PUSHBUTTON_0_ATTR (PIO_PULLUP | PIO_DEBOUNCE | PIO_IT_RISE_EDGE)
由于引脚被修改,在SAM4S的datasheet中 PIOA控制器复用说明中可以查到,PA2的外部唤醒函数是 WKUP2,而PA5的外部唤醒函数是WKUP4,所以要使唤醒在 Wait Mode 和 Backup Mode 有效果,还需要修改 low_power_board.h 文件中的宏定义:
- /** Wakeup pin for wait mode: WKUP2 pin (SW0) */
- #define WAKEUP_WAIT_INPUT_ID (1u << 4)
- /** Wakeup pin for backup mode: WKUP2 pin (SW0) */
- #define WAKEUP_BACKUP_INPUT_ID (1u << 4)
这样就可以接入串口工具进行测试,根据提示进入输入选择,效果如下:
其中 Exit from wait Mode. 是在按下按键唤醒MCU之后收到的消息。