今天拿到了stm32f103开发板,内心激动,因为好早就想买个开发板来玩stm32了,可惜板子比较贵,只能在51上练练手。 拿到板子,不用犹豫,感觉与电脑连接,烧个程序玩玩。然而,stm32烧程序并没有想象中那么简单,51的下载方法在stm32上果然不好使,百度了一下,原来stm32开发板用串口下载时需要短接BOOT0和3V3,虽然我还不知道为什么,但是目前还不需要知道为什么,所以我决定先把问题记下来,以后电路的知识和芯片的知识学多了再去解决! 下载最方便就是使用JLINK了,通过JTAG接口可以实现傻瓜式一键下载,很适合我这种小白。于是乎兴高采烈的下载了我的第一个程序进去,开发板并没有任何变化。因为这个程序是我随便写的,我现在还不知道怎么操作stm32的IO口,我大概知道它的IO口有多种特性:输入浮空、输入上拉、输入下拉、模拟输入、开漏输出、推挽式输出、推挽式复用功能呢、开漏复用功能。 操作这些IO端口需要对它的端口寄存器进行配置(按照32位字访问:如0x00000000)。 每组IO口都有两个32位端口寄存器:GPIOX_CRL和GPIOX_CRH分别控制(PX0~7)和(PX8~15)。例如我要操作PB5,那么我就要对GPIOB_CRL进行操作,因为官方的库函数已经对这样IO口进行定义,所以我们只须用调用这些函数就可以了,这些寄存器的每个16进制数代表4个二进制数,这个4个二进制数用来设置输入输出模式,高两位CNFy[]和低两位MODE[]。 位31:30CNFy[1:0]:端口x配置位(y =0…7) (Port x configuration bits)
27:26 软件通过这些位配置相应的I/O端口,请参考表17端口位配置表。
23:22 在输入模式(MODE[1:0]=00):
19:18
00:模拟输入模式
15:14
01:浮空输入模式(复位后的状态)
11:10
10:上拉/下拉输入模式
7:6
11:保留
3:2
在输出模式(MODE[1:0]>00):即低两位不是00(输入模式)
00:通用推挽输出模式
01:通用开漏输出模式
10:复用功能推挽输出模式
11:复用功能开漏输出模式 当然对这样端口操作还要在GPIOX_ODR这个端口输出数据寄存器进行操作,因为这个寄存器的高16位是保留的,所以低16位分别对应16个IO口,我们对应输1或0就可以配置这个IO口输出的电平了
今天就先记录到这里了~~上班去
|