stm32CubeMx学习日志(第一天)

基础理论知识(stm32f103c8t6)

一、cubeMx界面:


1、介绍:

左侧是MCU的外设选择界面,在这里选择使用的MCU外设资源有两种排序方式:Categories 种类选择 、 A-Z 顺序选择
中间是是详细的外设配置界面,关于每个外设的详细参数都在这里配置
右侧是芯片设置预览界面,预览每个引脚在什么位置和配置了什么功能

2、配置

2.1淡黄色表示为不可配置引脚,电源专用引脚以淡黄色突出显示。
橙色表示配置了一个I/O口的功能,但是没有初始化相对应的外设功能 
绿色表示配置成功

2.2推荐将RCC时钟配置外部晶振:
如果不配置RCC时钟,则是默认使用内部高速时钟(HSI),这也将影响之后时钟树的配置。
RCC时钟参数(Reset and Clock Control)复位和时钟控制
HSE 高速外部时钟
LSE 低速外部时钟
Crystal/Ceramic Resonator(晶体/陶瓷谐振器):使用外部晶振作为时钟源

2.3配置SYS参数


ST-Link采用的是SW调试接口,选择Serial Wire (使用SWD协议下载和调试);
如果使用J-Link 但是采用SWD协议,也可以选择Trace Asynchronous Sw ;
Trace Asynchronous Sw 模式有时候也可以解决使用ST-Link 烧录之后无法烧录和调试的情况
System Wake-Up :
设置低功耗模式下的自动唤醒功能,通过引脚PA0。
配置PLL锁相环,之后倍频更改系统主时钟

Timebase Source :
一般指HAL的时基,即HAL库中的uwTick,用于实现HAL_Delay()以及作为各种timeout时钟的基准。
一般情况下直接选择默认的Sys Tick(嘀嗒定时器)来维护SYS Timebase Source即可,即直接放在SysTick_Handler()中断服务函数中,也就是HAL_IncTick()函数。

2.4配置时钟树

2.5建立工程

1、选择工程存放路径

2、将Toolchain/IDE配置位MDK-ARM

3、勾选 Generate '.c/.h' files

二、DMA(直接储存器访问)

DMA传输,数据搬运工 内存到外设,外设到内存,内存到内存

无需CPU直接控制传输,也没有中断处理那样保留现场和恢复现场过程,通过硬件为RMA和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高

1、DMA请求
DMA传输数据,先向DMA控制器发送请求
DMA通道不同外设向DMA的不同通道发送请求DMA1有7个通道,DMA2有5个通道


2、DMA优先级
多个DMA通道同时发来请求时,就有先后响应处理的顺序问题,这个由仲裁器管理(优先级管理也分软件阶段和硬件阶段

3、DMA就是建立数据传输通道

外设想通过DMA发送数据,先发送请求
DMA控制器收到请求后,给外设一个ack
外设收到ack后,释放请求
外设启动DMA数据传输,直至传输结束

4、仲裁器管理DMA通道请求分为两个阶段:软件阶段(1)、硬件阶段(2)

第一阶段(软件阶段):每个通道的优先级可在DMACCRx寄存器中设置,有四个等级:最高、中和低优先级。

第二阶段(硬件阶段):如果两个请求有相同软件优先级,较低编号的通道比较高编号的通道有较高的优先级。
(大容量芯片中,DMA1控制器拥有高于DMA2控制器的优先级)
注意:多个请求通过逻辑或输入到DMA控制器,只能有一个请求有效。


USART2_RX: Memory to Peripheral : 内存向外设搬运 
USART2_TX: Peripheral to Memory : 外设向内存搬运
 

三、串口中断

串口中断是指当单片机收到一个串口数据时,单片机会产生一个中断信号,通知处理器中断服务程序去处理这个接收到的数据。
 

STM32是一款广泛使用的微控制器,其串口使用函数如下:

1. 初始化串口:HAL_UART_Init()

该函数用于初始化UART或USART外设,它接受一个UART_HandleTypeDef结构体类型的参数,该结构体包含了UART的配置信息,例如波特率、数据位数、停止位数、校验方式等。

2. 发送数据:HAL_UART_Transmit()
该函数用于向串口发送数据,它接受三个参数:UART_HandleTypeDef结构体类型的指针、发送缓冲区指针和发送数据长度。

3. 接收数据:HAL_UART_Receive()
该函数用于从串口接收数据,它接受三个参数:UART_HandleTypeDef结构体类型的指针、接收缓冲区指针和接收数据长度。

4. 发送字符串:HAL_UART_Transmit()
该函数可以用于向串口发送字符串,只需要将字符串的地址和长度作为参数传入即可。

5. 接收字符串:HAL_UART_Receive()
该函数可以用于从串口接收字符串,只需要将接收缓冲区的地址和长度作为参数传入即可。

6. 中断方式发送数据:HAL_UART_Transmit_IT()
该函数用于以中断的方式向串口发送数据,它接受三个参数:UART_HandleTypeDef结构体类型的指针、发送缓冲区指针和发送数据长度。

7. 中断方式接收数据:HAL_UART_Receive_IT()
该函数用于以中断的方式从串口接收数据,它接受三个参数:UART_HandleTypeDef结构体类型的指针、接收缓冲区指针和接收数据长度。

//定时器的中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if(htim->Instance==TIM2)
    {
    }
}

Mode:Asynchronous异步通信
 

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
学习STM32CubeMX可以帮助你更方便地进行STM32芯片的图形化配置和代码生成。STM32CubeMX是ST意法半导体推荐的配置工具,可以通过图形化界面来进行基础设置配置以及生成C语言的初始化代码,从而减轻开发工作的负担,节省时间和费用,并提高开发效率。它几乎覆盖了STM32全系列芯片。 在学习STM32CubeMX之前,首先需要了解其界面介绍。界面介绍包括了STM32CubeMX的各个部分以及它们的功能和作用。这些信息可以在文献中找到。 此外,了解代码编写的规范也是很重要的。在使用STM32CubeMX时,要将自己的代码写在 /* XX CODE BEGIN*/ 和 /* XX CODE END*/ 之间,这样在下次再生成工程时,不在这个区域内的代码不会被删除。更多关于代码编写规范的详细信息可以在文献中找到。 另外,补充一下STM32的三种开发模式,它们是:标准外设库模式、HAL库模式和LL库模式。每种模式都有自己的特点和适用场景,具体的内容可以在之后的博客中详细介绍。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [STM32 CubeMx教程 -- 基础知识及配置使用教程](https://blog.csdn.net/Dir_x/article/details/128846252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值