STM32根据数据手册完成LED驱动开发

从今天开始,我们就要了解一下bsp(board support package板级支持包)工程管理了。为什么呢?因为stm32的开发不同于51单片机开发,其需要的核心库文件,驱动库文件各有用处,我们需要加以区分,方便后期维护管理与阅读。以stm32为例,通常包括意法半导体公司提供的驱动标准库文件夹driver,官网可下载stm32f10x_stdperiph_lib_v3.5.0,里面是各种基础外设的驱动。内核支持文件夹core,主函数文件main.c和应用层驱动文件夹app。大致四个文件,可看下图。其中多出来的两个是软件创建工程时自动生成的。
了解之后,我们就知道需要在app中创建我们的led应用驱动文件,包括.c和.h文件。实现对led的控制,首先看硬件连接,根据开发板电路原理图,led0与pa8引脚(引脚情况看上一篇有介绍)相连,本节我们就以led0为例讲解。led1大家就自行看原理图就知道怎么连接了,pwr是电源指示灯,可以看到,其led正极一端接地,负极一端接vcc,能够上电直接点亮。而led0就需要低电平信号才能够点亮。
了解了硬件连接后,我们就需要了解驱动程序的开发。根据手册《stm32f10中文参考手册》,与51单片机开发类似,我们仍旧需要了解gpio功能模式和控制寄存器。共有八种工作模式:
注:复位期间和刚复位后,gpio端口配置为浮空输入模式。
控制和配置寄存器如上图所示,我们今天的led是gpio输出功能,且端口是pa8,属于pa中的端口配置高寄存器管理,具体可看手册介绍。
端口输出寄存器是odr
可以看到下面的注:使用bsrr可以对每个位单独控制,而操作odr必须同时操作16位。
转来,我们看看bsrr
可以配置31:16相应位为1,输出0,而其他位不起作用。
所以上寄存器代码
rcc- >apb2enr = 0x00000004;//时钟使能rcc- >cfgr=0x06000000;//时钟配置gpioa- >crh|=0x00000003;//输出速度最大50mhz 推挽输出gpioa- >bsrr|=0x00100000;好了,那么我们看下寄存器代码吧,全是数据,不看寄存器谁能知道现在是在干什么,哪个位要起作用呢。除此之外,stm32寄存器多达上百,好,谁去记住这些,换个有其他功能的芯片,再去记一下?寄存器代码的重用性,可读性,移植性都不是很高,而且看前面的rcc->apb2enr也是官方定义好的,也没让我们操心,至此,我们刨根问底已经很可以了,再不行你就去做芯片设计吧,那就不是我能讲述的知识了。
这就是标准库的好处,帮我们打通寄存器与接口调用的关系,让我们调用库函数实现这一功能。
gpio_inittypedef gpio_initstructure; rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_gpiod,enable); gpio_initstructure.gpio_pin=gpio_pin_8; gpio_initstructure.gpio_mode=gpio_mode_out_pp; gpio_initstructure.gpio_speed=gpio_speed_50mhz; gpio_init(gpioa,&gpio_initstructure);需要注意一点,第二行是函数调用了已经,第一行是定义变量,一个结构体,如果不把变量定义在函数之前,就等着报错吧。
库函数使用参考手册《stm32f10x_stdperiph_lib_um.chm》一个网页格式的文档,可以去官网下载,相信我,看熟这个,开发stm32系列所有芯片都大差不离了。
下面是各个功能模块的函数调用
下面是各个函数调用参数时的结构体定义(将寄存器进行了封装)
后面还会总结下开发流程,本篇入门,看看了解下。大家也看到,写这么多其实还有很多遗漏,所以自学的难度肯定有的,这也是我推出课程的原因。

如何通过物联网更充分地利用智能照明
制作自己的ci线圈
安科瑞智能电力仪表IEC标准APM系列简介
蓝牙 5.0 时代爆发,真无线蓝牙耳机现状分析
基于工业物联网的电机运行状态和能耗监测报警系统
STM32根据数据手册完成LED驱动开发
GPIO输出主要电路结构
CAN总线的特点/帧类型/应用中的注意事项
AI芯片助力英伟达,将净赚市场80%利润
未来已来,技术整理构建的好时机
中兴一款新机的挖孔摄像头专利曝光将镜头隐藏在了状态栏上
基于Cyclone II FPGA开发平台实现语音识别算法程序的设计
为避免客户浪费时间 定制插头连接器是最合适的办法
全国首条第8.6代AMOLED显示器件生产线落地成都
魅族裁员,折腾背后是产品的市场危机
怎么打开局域网通讯协议
机械手拆除步骤及注意事项
五大典型场景下 电信联通如何展开联合建网?
基本开关电源拓扑(2)-BOOST/BUCK-BOOST拓扑
实现螺纹的铣削,机床必须具备三轴联动的功能