精华内容
下载资源
问答
  • 2021-10-29 19:57:31

    STM32

    开发环境

    1. 安装MDK软件
    2. 在桌面创建一个用于专门保存是stm32 的文件夹
    3. 安装芯片包
    4. 打开软件新建工程(Project)保存到文件夹
    5. 将启动文件添加到文件夹

    点亮LED灯

    1. 配置使能APB2的GPIOC时钟

      *(unsigned int *)0x4002 1010 |= 0x01 << 4 //起始地址+偏移地址  0x4002 1000 + 0x10
      
    2. 配置GPIOC13端口输出模式

      *(unsigned int *)0x4001 1004 |= 0x01 << 20 //起始地址+偏移地址  0x4001 1000 + 0x04
      
    3. 配置GPIOC13为输出低电平

      *(unsigned int *)0x4001 100C &=~ (0x01 << 13) //起始地址+偏移地址  0x4001 1000 + 0Ch
      

    中断

    中断类型

    1. 系统异常,体现在内核水平
    2. 外部中断,体现在外设水平

    NVIC简介

    NVIC:嵌套向量中断控制器,属于内核外设,管理着包括内核和片上所有外设的中断相关的功能

    两个重要的库文件:core_cm3.h和misc.h

    NVIC寄存器简介

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5LaC3QT-1635508650237)(C:\Users\86150\Desktop\截图\nvic.png)]

    中断优先级的定义

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OISFWsk8-1635508650241)(C:\Users\86150\Desktop\截图\nvic1.png)]

    中断编程的顺序

    1. 使能中断请求
    2. 配置中断优先级分组
    3. 配置NVIC寄存器,初始化NVIC_InitTypeDef
    4. 编写中断服务函数

    EXTI简介

    外部中断/事件控制器

    输入线

    1. 有20根输入线(EXTI0、EXTI1~EXTI19)

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9gfkjRZ-1635508650244)(C:\Users\86150\Desktop\截图\EXTI.png)]

      1. 通过外部中断寄存器(AFIO_EXTICR1、AFIO_EXTICR2、AFIO_EXTICR3、AFIO_EXTICR4)来选择

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FtinmL6g-1635508650247)(C:\Users\86150\Desktop\截图\EXTI1.png)]

    EXTI初始化结构体

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z2BvO6Fb-1635508650249)(C:\Users\86150\Desktop\截图\exti3.png)]

    编程流程

    1. 初始化用来产生中断的 GPIO

    2. 初始化 EXTI

    3. 配置 NVIC

    4. 编写中断服务函数

    5. 主函数调用

    SysTick——系统定时器

    SysTick 简介

    SysTick—系统定时器是属于 CM3 内核中的一个外设,内嵌在 NVIC 中。系统定时器是 一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置系 统时钟 SYSCLK 等于 72M当重装载数值寄存器的值递减到 0 的时候,系统定时器就产生 一次中断,以此循环往复。

    SysTick 寄存器介绍

    SysTick—系统定时器有4个寄存器,简要介绍如下。在使用SysTick产生定时的时候, 只需要配置前三个寄存器,最后一个校准寄存器不需要使用。

    寄存器名称 寄存器描述

    • CTRL SysTick 控制及状态寄存器

      位段名称类型复位值描述
      16COUNTFLAGR/W0如果在上次读取本寄存器后, SysTick 已经计 到 了 0,则该位为 1。
      2CLKSOURCER/W0时钟源选择位,0=AHB/8,1=处理器时钟 AHB
      1TICKINTR/W01=SysTick 倒数计数到 0 时产生 SysTick 异常请 求,0=数到 0 时无动作。也可以通过读取 COUNTFLAG 标志位来确定计数器是否递减 到 0
      0ENABLER/W0SysTick 定时器的使能位
    • LOAD SysTick 重装载数值寄存器

      位段名称类型复位值描述
      23:0RELOADR/W0当倒数计数至零时,将被重装载的值
    • VAL SysTick 当前数值寄存器

      位段名称类型复位值描述
      23:0CURRENTR/W0读取时返回当前倒计数的值,写它则使之清 零,同时还会清除在SysTick控制及状态寄 存器中的 COUNTFLAG 标志
    • CALIB SysTick 校准数值寄存器

    通信的基本概念

    数据的传送方式

    1. 并行通讯
    2. 串行通讯(USART、IIC、SPI)

    串行与并行通信的特性对比

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CgbwlvnS-1635508650250)(C:\Users\86150\Desktop\截图\通信.jpg)]

    数据通信方向

    1. 全双工
    2. 半双工
    3. 单工

    数据同步方式

    1. 同步通讯
    2. 异步通讯

    通信的速率

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VN57g78S-1635508650252)(C:\Users\86150\Desktop\截图\通信2.jpg)]

    码元:传输的信息是码元(例如3.3V、0V),所以大多数情况下一个码元往往对应一个二进制位。

    USART

    串口通信协议简介

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8Whw1mdt-1635508650253)(C:\Users\86150\Desktop\截图\usart.png)]

    1. 常用标准

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-asqBs9Ut-1635508650254)(C:\Users\86150\Desktop\截图\usart2.png)]

      ps:RS-232与TTL的区别

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ybxLswTF-1635508650255)(C:\Users\86150\Desktop\截图\usart3.png)]

    DMA

    DMA简介

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-O2Dz48uP-1635508650257)(C:\Users\86150\Desktop\截图\DMA.png)]

    PS:上图DMA2应该是有5个通道,而不是7个

    更多相关内容
  • STM32_内核外设_CAN

    2021-01-06 06:03:51
    CAN构成STM32F1内核外设CAN的构成CAN的数据帧图示讲解控制/状态配置寄存器CAN_MCR寄存器CAN_BTR测试模式讲解位时序及波特率发送邮箱发送报文的流程寄存器接收FIFO验收筛选器筛选器分类按长度分类按模式分类标识符...
  • 里面包含chm原版文件以及解压后的网页文件,原版文件为全英文,中文可通过网页文件使用浏览器进行中文翻译。
  • 看了许多资料都没有讲如何配置DMA通道外设基地址 ...#define ADC1_DR_Address ((u32)0x4001244C) 就是ADC1的外设基地址(0x4001 2400)加上ADC数据寄存器(ADC_DR)的偏移地址(0x4c)计算得到的。
  • 内置两份文档,STM32G0资源全面讲解,包括内置Tpye-c,与市面上F0/F1对比,适合初次或全面了解G0的童鞋
  • STM32F1XX官方标准外设库V3.5,从ST官方下载的最新库。
  • 串口DMA空闲接收,usb等
  • STM32常用外设驱动程序
  • 偶然间论坛看到大牛分享的 STM32H743IIT6使用STM32CUBEMX配置大多数外设手册,在这里分享给大家。共同进步
  • 文章简单介绍了STM32中片内外设使用的IO端口的配置问题,以及一些细节问题和情况
  • ST官方的STM32F0外设培训手册中文 包含iic uart spi usb timer clock flash rcc dma exti adc mo内核的详细介绍 中文的 ST官方出品
  • stm32f407部分外设驱动

    2017-12-07 21:38:14
    stm32f407部分外设驱动,can总线,定时器,gpio,串口,系统时钟等
  • STM32F103C8T6模块外设资源分布图.jpeg STM32F103C8T6模块外设资源分布图.jpeg STM32F103C8T6模块外设资源分布图.jpeg STM32F103C8T6模块外设资源分布图.jpeg STM32F103C8T6模块外设资源分布图.jpeg STM32F103C8T6...
  • STM32G4的外设

    2022-01-30 18:03:51
    STM32G4芯片外设详解包含 1.ADC外设 2.DAC外设 3.片内运放 4.片内比较器 5.滤波算法加速器(FMAC)
  • STM32使用DMA功能使串口发送数据的同时,LED灯不停的闪烁
  • STM32与其他外设串口数据帧收发纯C代码详细的使用方式
  • VS Code STM32开发笔记 -外设-串口

    千次阅读 2022-03-12 22:49:47
    6.完善外设驱动usart.c(1.中断回调,2.printf支持) 7.完善main.c完成测试 1.cubemx创建工程配置基础内外设(swd接口,时钟,NVIC) 2.配置串口 3.生成makefile工程 4.vscode打开并创建工程目录 1....

    流程:
    1.cubemx创建工程配置基础片内外设(swd接口,时钟,NVIC)
    2.配置串口
    3.生成makefile工程
    4.vscode打开并创建工程目录
    5.编辑makefile文件
    6.完善片上外设驱动usart.c(1.中断回调,2.printf支持)
    7.完善main.c完成测试

    1.cubemx创建工程配置基础片内外设(swd接口,时钟,NVIC)
    创建工程,设置芯片
    打开swd端口
    设置外部晶振
    设置时钟

    2.配置串口
    设置异步通信,其他用默认配置
    打开中断,并配置gpio
    GPIO

    3.生成makefile工程
    配置工程路径,设置生成makefile工程
    选择配置独立源文件
    生成工程
    4.vscode打开并创建工程目录
    1.工程根目录下创建hwl、fml、bll、apl四个目录【此步可以忽略,为以后架构设置做准备】
    2.makefile文件在头文件处添加以上四个目录
    使用vsc打开工程
    makefile文件修改

    6.完善片上外设驱动usart.c(1.中断回调,2.printf支持)
    (以代码为准,图片只是指名位置)

    /**
     * @brief 串口回调函数
     * 接受串口发送的消息,同时转发出来
     * !使用ch,每次设备重启后的第一个字符不能接受,此后所有接受正常。
     * @param huart串口设备名
     */
    void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
    {
        static uint8_t ch[1] = {0};
        HAL_UART_Transmit(&huart1, ch, 1, 1000);
        HAL_UART_Receive_IT(&huart1, ch, 1);
    }
    
    #if defined(__GNUC__)
    /**
     * @brief 实现GNU编译环境下的printf()函数
     * !如果使用armcc则使用另外的实现方法,此处暂未实现
     * @param fd
     * @param pBuffer
     * @param size
     * @return int
     */
    int _write(int fd, char *pBuffer, int size)
    {
        HAL_UART_Transmit(&huart1, pBuffer, size, 0xff);
        return size;
    }
    #elif defined(__ARMCC__)
    
    #endif
    

    代码编辑位置

    至此,已经实现了串口的驱动编写,以下内容为驱动的测试过程:

    7.完善main.c完成测试
    1.HAL库在每次接受后自动关闭中断,需要每次调用HAL_UART_Receive_IT()来开启中断,因此在上一步,每次发送完成后需要调用此函数开开启中断,测试函数中也需要提前开始中断。
    2.主循环测试printf()函数。记得加入延时.
    添加3行代码
    在这里插入图片描述

    /* USER CODE BEGIN WHILE */
        uint8_t pDataBuffer[128] = {0};
        HAL_UART_Receive_IT(&huart1, pDataBuffer, 1);
        while (1)
        {
            printf("Hello World!");
            HAL_Delay(1000);
            /* USER CODE END WHILE */
    
            /* USER CODE BEGIN 3 */
        }
        /* USER CODE END 3 */
    

    注意事项:
    1.波特率要对上

    展开全文
  • 概述 这是一个最小的示例项目,展示了如何使用STM32的硬件SPI外设与ILI9341 TFT显示器进行通信。
  • 自己改写的STM32F0内部FLASH程序,做一些小东西时,保存参数少时候使用,减少外设存储芯片。
  • stm32f0xx_stdperiph_lib_um(STM32F0标准外设函数库手册)
  • stm32_DMA_存储器到外设传输,含STM32Keil 工程文件。
  • 本手册适用于STM32G0, STM32G4, STM32H7, STM32L5,STM32MP1系列
  • 这篇文档是为提供STM32F10xxx CAN外设使用的应用程序
  • 电子-STM32通信外设应用级库函数.pdf,单片机/嵌入式STM32-F0/F1/F2
  • 本文介绍了在使用STM32单片机IO口复用功能时外设不工作的问题和解决方法。
  • STM32F030标准外设固件库 官网上下载的 标准版
  • 函数代码点击鼠即可生成,常用外设驱动都有,非常方便
  • STM32以太网进阶培训Part1_STM32以太网外设(2018.03)
  • 例程制作主要参考文档为野火单片机固件库开发手册,为增强代码可读性与移植性,使用结构体操作外设的硬件配置方案

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 32,070
精华内容 12,828
关键字:

stm32片内外设