我们先看熟悉的stm32f103:
stm32f1系列的GPIO寄存器有:
GPIOx_CRL:Port configuration register low(配置端口A到G的模式与速度),CRL中包含了2种表示不同意思的位:CNFy和MODEy,y表示所需要设置的Pin口具体如下:
其中CNF0和MODE0是配置Pin1的,4个位表示一个Pin以此类推CRL一共可以配置8个对应Pin1到Pin8,高于8位的属于CRH寄存器(下面会讲到),那么到底该如何配置这些位呢?由手册可知:
MODEy的位配置的是输入模式还是输出模式以及输出模式下的速度,而CNFy位则根据MODEy的大小来匹配不同的模式,
在输入模式下,CNFy的2个位:
为00时为模拟输入的模式,
为01时为浮空输入模式,
在10时为带上拉或者下拉的输入模式,
为11时为保留位,
在输出模式下,CNFy的2个位:
为00时为推挽输出模式,
为01时为开漏输出模式,
为10时为复用输出模式,
为11时为复用开漏输出模式。
至于是输出模式还是输入模式则配置MODEy的2个位:
为00时为输入模式,
为01时为速度最大为10MHz的输出模式,
为10时为速度最大为2MHz的输出模式,
为11时为速度最大为50MHz的输出模式.
GPIOx_CRH寄存器与GPIOx_CRL同理只是CRH配置的是高8位也就是PIN9到PIN16,配置对应PIN口的方式一样,后面的不想写了,有时间再写,有时间再写,看手册就行。