例程迭代:更新至串口数据传输 基于蓝桥杯嵌入式开发板

这篇博客详细介绍了基于蓝桥杯嵌入式开发板STM32F103RBT6的开发流程,包括使用keilv5.27开发环境,从例程1的闪烁流水灯、例程2的按键中断到例程3的串口数据传输。博主分享了在开发过程中遇到的问题和解决办法,如系统滴答定时器的使用、GPIO配置、中断服务函数的编写等,并强调了在不同keil版本中对硬件数据支持的注意事项。
摘要由CSDN通过智能技术生成

该系列博客调试过程搜寻大量网上经验,本人只是当作笔记在此记录,如有侵犯,请联系我,下架该文章,且本人能力有限,对代码理解难免出现纰漏以及错误的地方,敬请留言指正.
参考[1] 野火stm32 固件库例程

硬件平台: 蓝桥杯嵌入式开发板-stm32F103RBT6

开发环境: keilv5.27

注意事项:

[1]keil 在不断更新的过程中,将一些较老板卡的硬件数据压缩在器件支持包中.对于stm32F103RBT6在使用较高等级keil软件(5.24之后)时,需要安装器件支持包:MDKCM520.EXE,对于更高规格的R系列(实时控制领域)则需要安装:MDK Version 5 For ARM7 ARM9 Cortex-R V5.20.EXE芯片包.
[2]原本蓝桥杯大赛上的应用环境为keil4,在使用keil5作为开发环境建立工程时需要进行适当配置

知识点:

[1]在库文件中,针对每个外设,ST的工程师为了使得操作难度降低,通过使用stm32f10x.h 文件完成对寄存器的首次封装(其中通过使用数据结构类型-struct结构体内存分配的特点,),后编写的stm32f10x_gpio.c/.h文件中包含对外设的一些初始化/配置接口,再次封装.
[2]做到精确延时: 在不选用RTOS的情况下,可以使用cortex m3内核中自带外设 SysTick-系统滴答定时器
该外设属于内部外设,其中断优先级不由NVIC初始化,

例程目录

例程1 闪烁流水灯

例程2 按键中断

例程3 串口数据传输

例程1 闪烁流水灯

功能说明: 通过系统滴答定时器完成LED灯精确时间闪烁

工程文件树:


仅在HARDWARE文件组下根据不同用途,编写对应的BSP(各有一个源文件 bsp_xxx.c 用来书写函数的主体 和头文件bsp_xxx.h 进行函数声明 宏的定义 外部变量的引用 调用其他文件)
为此:
[1]对于LED灯,需要对GPIO进行配置
头文件:在这里插入图片描述
头文件中包含了对引脚的宏定义,并通过带参数的宏完成分支语句,注意:宏只能对一行的内容进行简单替换,在此通过续行符"\"连接内容. else 语句之后没有添加分号 为了在宏替换之后使用原先的分号,避免重复产生报错.


源文件:仅包含LED的GPIO的初始化函数 主要对GPIO初始化结构体成员进行配置 [1]引脚号 [2]引脚的工作方式 [3]输出速率
由于该扩展板的八路LED的引脚受控于74LS573芯片的LE,引脚,故须对LE引脚进行配置
通过电路图查阅
八路LED灯:LED1…8------>GPIOC-8…15
LE引脚: LE---->GPIOD-2
LE引脚在高电平时允许输出端及时受控于输入端,在低电平时进行引脚电平的锁存.

[2]系统滴答定时器
源文件:
在这里插入图片描述
调用了在core_cm3.h中定义的SysTick时钟初始化函数SysTick_Config()函数,对SysTick外设内部寄存器通过传入参数(累加计数时钟)进行配置,SystemCoreClock:在system_stm32f10x.h文件中声明的能够被外部文件引用的变量
定义static静态变量Decrement_count 保证该变量的作用域(仅在bsp_systick.c文件中使用)和生命周期.
由于Decrementing()函数并没有在bsp_systick.h文件中声明,故通过包含头文件的方式无法在其他C文件调用该函数,但在stm32f10x_it.c文件中需要执行SysTick中断函数(void SysTick_Handler(void)首先在启动文件中startup_stm32f10x_md.s中 进行weak类型声明和在中断向量表中 进行优先级的分配
) 完成时钟计数的递减操作,通过引用外部函数 extern void Decrementing(void)使函数能被正常调用

主函数
在这里插入图片描述
在主函数中对灯

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值