digitalWriteOpenDrain(byte pin, bool state)
{
if (state==LOW)
{
pinMode(pin, OUTPUT);
digitalWrite(pin, LOW);
}
else //state==HIGH
{
pinMode(pin, INPUT); // Getting HiZ output from this pin
digitalWrite(pin, LOW);
}
}
ref:
https://electronics.stackexchange.com/questions/28091/push-pull-open-drain-pull-up-pull-down
https://blog.csdn.net/fengyu09/article/details/50317423
http://www.st.com/content/ccc/resource/technical/document/reference_manual/51/f7/f3/06/cd/b6/46/ec/CD00225773.pdf/files/CD00225773.pdf/jcr:content/translations/en.CD00225773.pdf
http://www.st.com/content/ccc/resource/technical/document/datasheet/bc/21/42/43/b0/f3/4d/d3/CD00237391.pdf/files/CD00237391.pdf/jcr:content/translations/en.CD00237391.pdf
https://github.com/particle-iot/firmware/blob/1a0c5a2c204b312ae8c0435728999d6e3f296ead/hal/src/stm32f2xx/gpio_hal.c#L78
https://community.particle.io/t/electron-open-drain-output-gpio/20196/3
https://electronics.stackexchange.com/questions/156930/stm32-understanding-gpio-settings
https://github.com/DFRobot/STM32/blob/master/cores/blunoM3/wiring_digital.c
https://sites.google.com/site/learningeclipsearm/5-using-stm32-std-lib/b-digital-io-pins
http://m.www.cnblogs.com/luckyalan/p/5154829.html
No comments:
Post a Comment