关于我的蓝桥杯的学习笔记

本文详细介绍了使用STM32cubeMX进行工程创建,包括配置LED灯、LCD屏幕、定时器、按键、PWM、输入捕获、ADC、IIC总线和USART串口通信的步骤。通过实际操作演示如何配置硬件并编写代码实现各种功能。
摘要由CSDN通过智能技术生成

一、工程创建

1、STM32cubeMX打底

先创建一个新的文件夹

打开cubeMX打底

看到是这个芯片型号就好了

先弄好时钟

时钟的配置最后出去是80

把文件定位在刚才创建的test文件夹里,注意要改成basic和MDK V5(keil 5)版本这两个一定要勾点击生成文件就好了

刚刚文件夹里面的文件就有质料了进去编译一下0错误0警告就OK

二、点亮一个LED灯

1、cubeMX配置

LED原理图是PC8~PC15还有一个PD2的锁存器

将他们全部选中位output输出

按需求配置,如图要想灯一开始就是灭的,所以要设置成High(高电平)

锁存器一开始要关闭,就得是Low低电平。

生产文件是这样的就行

2、led.c

打开test的工程,和之前一样,建立led的.c和.h文件,不过要注意的是,.h要放在Inc里面定的文件夹,.c要放在Src文件夹

在文件夹里面新建一个DDA文件夹用来存放.c和.h文件新建的文件要在瓶子跟魔法棒里面导入

3、led.h

要引用头文件main.h

4、灯的封装

先去main.h定义

#define uchar unsigned char

#define uint unsigned int        用来简化无符号字符和整形

在主函数main.c中记得引用头文件 

主函数中初始化led

三、LCD屏幕

1、cubeMX配置

将对应的IO口全部设置位output就行

2、代码移植

复制这三个放在刚刚新建的DDA文件中

这样就行要在这里添加.c文件在main.c中引用这两个文件在参考例程那边把LCD的东西直接复制过来,记得LCD_Init();

记得在这里初始化LCD,然后就可以了

四、定时器按键

1、定时器cubeMX配置

一般选TIM3

按照上面步骤然后生成代码就好了

2、按键cubeMX配置

根据原理图确认所需的IO口

将所需的按键IO口全都设置为input输入模式

 然后将按键设置成上拉

3、interrupt(中断回调函数)

配置完之后要先编译一下然后找到tim.文件拉到最后去找这句写进interrupt.c

写一个结构题给按键,这里注意用bool类型别忘了包含stdbool.h文件和声明刚刚的回调函数。

4、按键
1、短按键

在.c文件中这样写就行

记得在main.c文件中开启刚刚所配置的TIM3定时器,

然后就可以在while里面写给按键所需实现的功能了。

2、长按键

在.h文件里面添加表示长按键

在.c文件里面的写法,这里其实也包含了短按键,然后去main.c写需要实现的功能即可

五、PWM(脉冲输出)

1、cubeMX配置

以十一届的省赛题为例

根据题目所需的IO口来选择,用PWM一定要用到定时器的,而且要带CH1标识的,这个TIM3我用来写了按键了,所以这里选TIM16和TIM17

这里TIM16按照这样配置

往下拉这里随便给一个占空比初值,后面在程序里是可调的

这是TIM17的,这里不一样,其他都一样,然后生成程序就行了,至于为什么看下面

因为要的是100Hz和200Hz,所以100Hz计算80兆除两次达到100,200Hz计算80兆除200和除100,为了计算方便定重装载值是100,这样预分频系数定8000和4000,别忘了减一。

2、主函数

在初始化后面开启PWM就可以按照题目要求来写代码了。

 这样用,可以新建两个新的文件,也可以在其他.c文件后面定义一个新的函数,然后直接在while里面调用就行了别忘记在main.c里面引用一下头文件

六、输入捕获(频率)

1、cubeMX配置

把这两个引脚使能,同样是CH1通道

把CH1改成输入模式

改预分频系数就行

打开中断,同时TIM3也是这样设置

2、keil写法

找到需要的中断回调函数,写在中断里

写法像这样

在.h里面声明一下这个回调函数

在main.c里面打开定时器,然后就OK了。

然后就是按键的TIM3定时器与这个冲突,所以需要将按键的定时器换一个,可以使用TIM4就行。

七、数模转换ADC

1、cubeMX配置

按照所需的IO口,都选择ADC_IN   输入模式ADC1勾选到11

ADC2勾选15,其他参数不用管,直接生成就好

2、keil写法

使用adc要新建两个文件夹,但是这里我没有新建,直接在前面pwm新建的文件夹写一起了

注意新建的不能是adc.c因为系统生成了adc.c了。

写一下adc调用函数

然后在.h里面声明

别忘记在main.c里面引用头文件就OK了

八、IIC总线

1、cubeMX配置

PB6和PB7,把这两个引脚output就行,然后生成代码

2、移植官方的库

将官方库里面的这两个文件移植到我们一开始新建的DDA文件里面

keil里面记得要添加

3、IIC读写函数

写在IIC文件里面,这是读的函数

这是写的函数

回去.h文件去声明这两个函数就行。

主函数里面记得声明就行,然后就开始在主函数写实现功能。

九、USART串口

1、cubeMX配置

设置到异步模式,注意如果没配置LCD它默认引脚设置成PC4和PC5了,我们要手动改成PA9和PA10。

打开中断

2、主函数(发送)

这里要添加这个库

举个例子,比如发送这个数据波特率啥的要选对,然后发送就OK了

3、主函数(接收)

把刚刚写的发送注释掉,写一下接收的中断函数在中断.c里面

首先去uart.h找中断函数

主函数引用一下刚刚定义的变量写uart_rx_proc()让他在屏幕中显示出来

下面处理一下接收的部分,因为要不断被接收,放在while里面

按理来说直接写uart_rx_proc();就行,但是为了保证接收的数据完整,要延时接收一下。

然后就ok了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值