Atmega644 GPIO引脚输出高低电平翻转问题
我用Atmel Start自动生成的项目文件,PORTB GPIO输出高低电平翻转的代码如下:/**
* \brief Toggle output level on pin
*
* Toggle the pin levels on pin
*
* \param pin The pin number for device
*/
static inline void PORTB_toggle_pin_level(const uint8_t pin)
{
PINB = 1 << pin;
}
也就是说 第一次调用PORTB_toggle_pin_level(2)
PB2输出高电平
第一次调用PORTB_toggle_pin_level(2)
PB2输出低电平
但是PINB是PortB Input Pins Address, PORTB输入引脚地址
不知道是怎么能够实现翻转的? PINB在数据手册定义:
数据手册67页:
12.2.2 Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Note that the SBI instruction can be used to toggle one single bit in a port. AVR的一个特色
ATMEGA32就没有这个功能。
这个估计要看I/O口的内部设计
页:
[1]