----芯片:STM32F429IGT6
----参考资料:正点原子视频
目录
一、基础知识
二、GPIO的8种工作模式
三、补充
1、STM32F429IGT6
①一共有9组IO: PA~PI
②其中PA~PH 每组16个IO PI只有PI0~PI11
③一共有140个IO口: 16*8+12=140
2、工作模式
四种输入模式:输入浮空、输入上拉、输入下拉、模拟输入 ;
四种输出模式:开漏输出(带上拉或者下拉)、开漏复用功能(带上拉或者下拉)、推挽式输出(带上拉或者下拉)、推挽式复用功能(带上拉或者下拉);
四种最大输出速度: -2MHZ低速、-25MHz中速、 -50MHz快速、-100MHz 高速。
3、IO口可以容忍5V电压。
①信号由外部输入到引脚。
②首先遇到上拉下拉电阻,这个是没有被设置的,所以不用管。
③其次遇到的是施密特触发器,这个开关是打开的。
④信号通过施密特触发器,读入到输入数据寄存器。
⑤通过设置为浮空输入模式,CPU就可以取读取IO口的输入电平。
⑥下面的输出控制部分是不起作用的,模拟、复用功能输入也是不起作用的。
①输入上拉模式和输入浮空模式是非常相似的,信号由外部输入到引脚。
②首先遇到上拉下拉电阻,这时会打开上拉电阻,上拉电阻和VDD相连接。
③其次遇到的是施密特触发器,这个开关是打开的。
④信号通过施密特触发器,读入到输入数据寄存器。
⑤通过设置为输入上拉模式,CPU就可以取读取IO口的输入电平。
⑥下面的输出控制部分是不起作用的,模拟、复用功能输入也是不起作用的。
①输入下拉模式和输入上拉模式是非常相似的,信号由外部输入到引脚。
②首先遇到上拉下拉电阻,这时会打开下拉电阻,下拉电阻和VSS相连接。
③其次遇到的是施密特触发器,这个开关是打开的。
④信号读入到输入数据寄存器。
⑤通过设置为输入下拉模式,CPU就可以取读取IO口的输入电平。
⑥下面的输出控制部分是不起作用的,模拟、复用功能输入也是不起作用的。
①信号由外部输入到引脚。
②首先遇到上拉下拉电阻,这时不打开上下拉电阻。
③在遇到施密特触发器之前,走了模拟通道,施密特触发器这个开关是关闭的。
④这时候信号会读到ADC片外设上,来进行读取信号。
⑤CPU通过读写ADC外设的寄存器,来读取模拟信号,并把它转换为数字信号。
⑥下面的输出控制部分是不起作用的,复用功能输入也是不起作用的。
①CPU会写置位/复位寄存器,然后会映射到输出数据寄存器。或者我们可以直接写输出数据寄存器。
②然后经过输出控制电路。
③然后进入N-MOS管,此时P-MOS管是不起作用的。
④如果置位/复位寄存器写入数据为“1”,则输出数据寄存器位为“1”,经过输出控制电路,传送到N-MOS管,N-MOS管处于关闭状态,并不会反映到IO口。
如果置位/复位寄存器写入数据为“0”,N-MOS管处于开状态,则会将VSS电平输出到IO口。
⑤此时我们需要在端口处设置上拉电阻,或者外接上拉电阻。
①复用功能输出连接的是片上外设模块。
②通过片上外设模块给输出控制电路一个信号,然后传到N-MOS管,此时P-MOS管是不起作用的。
③如果片上外设模块数据为“1”,则N-MOS管处于关闭状态,并不会反映到IO口。
如果片上外设模块数据为“0”,N-MOS管处于开状态,则会将VSS电平输出到IO口。
④此时我们需要在端口处设置上拉电阻,或者外接上拉电阻。
⑤在该模式下,施密特触发器处于开启状态,并将信号传输到输入数据寄存器中。
⑥CPU通过读取输入数据寄存器的值,来获取当前IO口的输出状态。
①CPU会写置位/复位寄存器,然后会映射到输出数据寄存器。或者我们可以直接写输出数据寄存器。
②然后经过输出控制电路。
③然后进入MOS管,此时P-MOS管和N-MOS管都是起作用的,都处于工作状态。
④如果置位/复位寄存器写入数据为“1”,则输出数据寄存器位为“1”,经过输出控制电路,传送到MOS管,N-MOS管处于关闭状态,P-MOS管前面有一个取反器,于是P-MOS处于开启状态,将VDD电平传输到IO口引脚上面。
如果置位/复位寄存器写入数据为“0”,P-MOS管处于关闭状态,N-MOS管处于开状态,会将VSS电平传输到IO口引脚上。
⑤在该模式下,施密特触发器处于开启状态,并将信号传输到输入数据寄存器中。
⑥CPU通过读取输入数据寄存器的值,来获取当前IO口的输出状态。
①复用功能输出连接的是片上外设模块
②通过片上外设模块给输出控制电路一个信号,然后传到MOS管,此时P-MOS管是不起作用的,此时P-MOS管和N-MOS管都是起作用的,都处于工作状态。
③如果片上外设模块数据为“1”,传送到MOS管,N-MOS管处于关闭状态,P-MOS管前面有一个取反器,于是P-MOS处于开启状态,将VDD电平传输到IO口引脚上面。
如果片上外设模块数据为“0”,P-MOS管处于关闭状态,N-MOS管处于开状态,会将VSS电平传输到IO口引脚上。
⑤在该模式下,施密特触发器处于开启状态,并将信号传输到输入数据寄存器中。
⑥CPU通过读取输入数据寄存器的值,来获取当前IO口的输出状态。
1、推挽输出模式是可以输出强高低电平的,连接数字器件。
2、开漏输出,只可以输出强低电平,高电平得靠外部电阻拉高,输出端相当于三极管的集电极,要想得到高电平需要上拉电阻才行,适合用于做电流型的驱动,其吸收电流的能力相对较强(一般20ma以内)。
3、上电复位后IO口状态
上电复位后,GPIO默认为输入浮空状态,部分特殊功能引脚为特定状态。
复位后,调试引脚处于复用功能上拉/下拉状态: PA15:JTDI处于上拉状态 PA14:JTCK/SWCLK处于下拉状态 PA13:JTMS/SWDAT处于下拉状态 PB4:NJTRST处于上拉状态 PB3:JTDO处于浮空状态
(文章为观看原子STM32视频后的笔记及总结,主要用于个人学习巩固知识)
(新手写文章,很多地方写的不够完善,还希望大家能够指点)(侵删)