自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 rtc时钟

RTC模块拥有一个连续计数的计数器,在相应的软件配置下,可以提供时钟日历的功能。修改计数器的值可以重新设置当前时间和日期 RTC还包含用于管理低功耗模式的自动唤醒单元。我们前面启用了RCC时钟模块的外部时钟引脚,这里我们需要将外部时钟源配置为实际使用的频率;参看EX3_1配置四个按键的外部中断,注意不同按键的上/下拉和边沿检测;配置完成后,对应时钟引脚变绿,同时旁边出现其将要配置模式的文字说明;选择启用外部的高速和低速时钟源,HSE和LSE,配置为晶振连接;4)套用之前的按键外部中断程序,实现设计效果。

2023-01-09 17:01:11 1341

原创 printf和scanf的串口重定向,格式化输入输出

MicroLib是对标准C库进行了高度优化之后的库,供MDK默认使用,相比之下,MicroLIB的代码更少,资源占用更少,在MDK编译环境下可以使用其MicroLib,快速实现printf重定向;1)勾选Use MicroLib,使用半主机模式2)重定义fputc到串口此函数原本是将 字符ch 打印到文件指针 stream 所指向的文件流去的,现在我们不需要打印到文件流,而是打印到串口1。在 usart.c 中,重写fputc。

2023-01-09 09:25:27 3855 1

原创 串口中断收发定长数据

在文件中:1)HAL_StatusTypeDef HAL_UART_Transmit:串口发送函数/***///STM32F1 的发送与接收是通过数据寄存器 USART_DR 来实现的,这是一个双寄存器,包含了 TDR 和 RDR。当向该寄存器写数据的时候,串口就会自动发送,当收到数据的时候,也是存在该寄存器内。通过该函数向串口寄存器 USART_DR 写入一个数据。以阻止模式发送大量数据。

2023-01-09 09:13:04 2139

原创 MAX30102血氧模块检测心率和血氧

我们前面启用了RCC时钟模块的外部时钟引脚,这里我们需要将外部时钟源配置为实际使用的频率;1)单片机与MAX30102的IIC基本数据通信,这里我们通过HAL库的相应函数来实现;在右侧筛选栏中选择Tx型,即开发板上芯片所用的LQFP64型封装,双击建立工程。配置完成后,对应时钟引脚变绿,同时旁边出现其将要配置模式的文字说明;选择启用外部的高速和低速时钟源,HSE和LSE,配置为晶振连接;点击上方的时钟配置选项卡,进入时钟配置界面;MAX30102的需配置的寄存器的功能和地址。

2023-01-02 17:04:56 7456 5

原创 SPI+OLED的简单显示

OLED,即有机发光二极管(Organic Light-Emitting Diode),又称为有机电 激光显示(Organic Electroluminesence Display, OELD)。OLED由于同时具备自发光,不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广、构造及制程较简单等优异之特性,被认为是下一代的平面显示器新兴应用技术。

2023-01-02 10:21:45 3736

原创 IIC总线及心率脉搏传感器

I2C 通讯协议 (Inter - Integrated Circuit) 是由 Phiilps 公司开发的,由于它引脚少,硬件实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路 (IC) 间的通讯。生产使用I2C器件的厂商,须向Phiilps 购买授权。接下来我们同学习串口协议一样,从物理层和协议层来了解I2C。MAX30102是一款集成式脉搏血氧仪和心率监测模块。

2023-01-01 16:44:40 912

原创 定时器的解读

STM32 单片机的定时器分为高级定时器、 通用定时器 、基本定时器三种。这三个定时器成上下级的关系,即基本定时器有的功能通用定时器都有,而且还增加了向下、向上/向下计数器、PWM生成、输出比较、输入捕获等功能;而高级定时器又包含了通用定时器的所有功能,另外还增加了死区互补输出、刹车信号。(此处我们暂时忽略,暂时我们暂时还不需要接触这些功能)正在上传…重新上传取消我们使用的STM32F103RBT6芯片上只有一个高级定时器TIM1和三个通用定时器TIM2~4。

2023-01-01 16:29:27 1676

原创 DMA的解读

直接存储器访问(Direct Memory Access),简称DMA。前述的对I/O设备的数据搬运操作,无论是轮询方式还是中断方式,都需要CPU读写参与其中,在要进行大量数据传输时,CPU的利用效率将大大降低;DMA是CPU一个用于数据从一个地址空间到另一地址空间“搬运”(拷贝)的组件,数据拷贝过程不需CPU干预,数据拷贝结束则通知CPU处理。因此,大量数据拷贝时,使用DMA可以释放CPU资源。DMA就是基于以上设想设计的,它的作用就是解决大量数据转移过度消耗CPU资源的问题。

2023-01-01 16:27:25 3729

原创 串口通信的解读

很明显,因为一次可传输多个数据位的数据,在数据传输速率相同的情况下,并行通讯传输的数据量要大得多,而串行通讯则可以节省数据线的硬件成本 (特别是远距离时) 以及 PCB 的布线面积,不过由于并行传输对同步要求较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能,现在随着技术的发展,越来越多的应用场合采用高速率的串行差分传输。当使用校验位时,串口传输的长度将是 8 位的数据帧加上 1 位的校验位总共 9 位,此时 USART_CR1 寄存器的 M 位需要设置为 1,即 9 数据位。

2023-01-01 16:25:59 1774

原创 NVIC和外部中断

对I/O设备的程序轮询(Polling)的方式,是早期的计算机系统对I/O设备的一种管理方式。它定时对各种设备轮流询问一遍有无处理要求。轮流询问之后,有要求的,则加以处理。在处理I/O设备的要求之后,处理机返回继续工作。尽管轮询需要时间,但轮询不比I/O设备的速度要快得多,所以一般不会发生不能及时处理的问题。当然,再快的处理机,能处理的输入输出设备的数量也是有一定限度的。而且,程序轮询毕竟占据了CPU相当一部分处理时间,因此程序轮询是一种效率较低的方式,在现代计算机系统中已很少应用。

2023-01-01 16:24:28 1287

原创 通用输入输出端口GPIO

GPIO是通用输入/输出(General Purpose I/O)的简称,主要用于工业现场需要用到数字量输入/输出的场合。为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成(参考AFIO寄存器描述)。这时,复用功能就不再映射到它们的原始引脚上了。以上这些信息都可以在数据手册的引脚定义章节和编程参考手册的GPIO章节查询到!!!

2023-01-01 16:22:31 826

原创 时钟系统的解读

众所周知,时钟系统是 CPU 的脉搏,就像人的心跳一样。所以时钟系统的重要性就不言而喻了。STM32F103的时钟系统比较复杂,不像简单的51单片机一个系统时钟就可以解决一切。

2023-01-01 16:14:04 487

原创 stm32库编程

在用寄存器点亮 LED 的时候,我们会发现 STM32 的寄存器都是 32 位的,每次配置的时候都要对照着《STM32F10X-中文参考手册》中寄存器的说明,然后根据说明对每个控制的寄存器位写入特定参数,因此在配置的时候非常容易出错,而且代码还很不好理解,不便于维护。而STM32单片机的外设数量要比51单片机丰富的多,架构和功能也复杂的多,带来的必然是寄存器的数量和复杂度的增加,如仅一个GPIO端口就有7个可配置的寄存器,还不包括与之配套的时钟、中断部分,更不包括依赖IO的其他外设的复用和重定义功能。

2023-01-01 16:12:35 1898

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除