作为一名物联网专业的,我能不学STM32么!选这个专业的时候我就知道可以又学编程又学电路,果然梦寐以求。学习使我快乐,就是头冷,(我学的东西好杂)外加上一些其他事情就更没时间做其他事情了,这个专业再加上种种原因使我成为了单身狗·精英。21年的单身狗精英。这门课已经快结束了,要交作业了,以前也没怎么听。所以开始做作业,边学边做。三道题目。
我自己的笔记,是有我自己 的风格的,也看过别人的笔记,确实挺好的,但我不打算学,好累的。侧重点不同,我这可能会简略一笔带过甚至不提。
1.如果使用GOIOC6接口为推拉方式输出,最高频率50MHz,分别使用寄存器模式和库函数模式,如何进行编程。
主要就是寄存器了。
GPIO寄存器包括2个32位的配置寄存器(GPIOx_CRL,GPIOx_CRH),2个32位的数据寄存器(GPIOx_IDR,GPIOx_ODR),1个32位的置位/复位寄存器(GPIOx_BSRR),1个16位的复位寄存器(GPIOx_BRR),1个32位的锁定寄存器(GPIOx_LCKR)。以上所有寄存器不允许按位或字节访问,必须按32位字访问。GPIO寄存器
配置寄存器
配置GPIO的IO口C,那么需要写CNF c[1:0],MODEc[1:0].
MODE[1:0]
00为输入模式(复位后的状态)
01为输出模式,最大频率10MHz
10为输出模式,最大频率2MHz
11为输出模式,最大频率50MHz
所以MODE[1:0]为11
CNF[1:0]
输入模式:
00为模拟输入模式
01为浮空输入模式(复位后的状态)
10为上拉/下拉输入模式
11为保留
输出模式
00为通用推挽输出模式
01为通用开漏输出模式
10为复用功能推挽输出模式
11为复用功能开漏输出模式
所以为CNF[1:0]为00
IO口是6,在0~7号内,写CRL寄存器,如果是8~15号的话使用CRH寄存器。
GPIOC->CRL的CNF6[1:0]为00,GPIOC->CRL的MODE6[1:0]为11
代码&#x