STMCU小助手
发布时间:2022-2-4 19:00
|
学会了如何新建一个工程模板,下面就要开始动手实践了。像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推。如果你已经有了一定的C语言基础以及曾经使用过类似的芯片,那么学习起来绝对事半功备。当然没有也不需要担心,本项目实现起来很简单。不过学习嵌入式,第一点就是要转变思路,从现在开始你不在是仅仅和编程语言打交道了,交叉编译的方式注定嵌入式项目软硬件不分家,从硬件实现,软件设计,软硬件调试,硬件运行观察结果,熟悉和适应这个流程对于嵌入式学习和研发具有重要意义。 因为所有例程都是在现有开发板完成的,所以主要涉及上面后三个方面,其中最核心的部分就是软件设计。流水灯的实现并不复杂,系统的来说包含硬件接口信息获得,驱动配置,逻辑实现,编译测试等组成。了解了上述流程,项目设计就比较简单了: 1)原理图分析 ![]()
根据上面原理图。就能得出信息LED对应端口PD2,PD3,PD4,PD7,外部上拉电阻,低电平点亮。 STM32的GPIO端口工作模式有8种: 模拟输入 用于模拟量的输入,或者低功耗下省电。 下拉输入 端口内下拉电阻电路导通。默认为低电平,外部高电平动作。 上拉输入 端口内上拉电阻电路导通,默认为高电平,外部低电平动作。 浮空输入 端口内上下MOSFET均不导通,高阻态,输入状态仅由端口决定。 开漏输出 端口输出为0时内部下拉电阻电路接地,输出1时端口相当于悬空,即默认只能输出0,如果外部需要输出1,需要外接上拉电阻电路。 推挽输出 端口输出为0时内部下拉电阻电路接地,输出1时内部接上拉电阻电路,默认输出为0。 复用开漏输出 内部设置同开漏,但被其他外设复用。 复用推挽输出 内部设置同推挽,但被其他外设复用。 结合原理图和GPIO端口的配置信息,可知端口配置为推挽输出,由内部上拉电阻来保证LED熄灭。 熟悉下stm32f10x固件函数库中的stm32f10x_gpio.c文件,接下来就可以开始项目编程了。 LED相关引脚初始化:
使能外设区域时钟对于所有外设都是必须的,且要先于外设初始化函数,这是因为stm32的寄存器配置也是依靠时钟脉冲才能够处理的。 GPIO_Mode_Out_PP即固件函数库中对应推挽输出。 如上,就完成外设初始化,接下来就可以直接利用固件库提供的API接口操作LED了,具体实现代码:
如此,就实现了LED1点亮->LED1灭->LED2亮->......的循环过程,完整代码可参考文件1-1,希望对入门stm32学习有帮助! |
【福利三:逢7发帖赢大礼】4、基于STM32G070板子SPI flash 移植SFUD库
【福利三:逢7发帖赢大礼】基于STM32G070板子的uart shell移植设计
【福利三:逢7发帖赢大礼】3、基于STM32G070板子的YModem串口协议通信
【福利三:逢7发帖赢大礼】2、基于STM32G070板子的OLED移植U8G2库
实战经验 | ClassB功能安全认证代码与应用代码分区的实现要点
STM32G0 系列 I2C 通信异常典型案例分析与解决方案总结
经验分享 | LAT1490 两个STM32G0 I2C 通信异常的案例分析
经验分享 | STM32G0 I2C bootloader Go 命令后调试连接失败:DBG_SWEN 位复位修复
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
经验分享 | STM32G0B1 待机模式意外唤醒深度解析:RTC 结构体未初始化的隐形坑
微信公众号
手机版