stm32

用Arduino开发stm32,先试试!

懵懂的女人 提交于 2020-03-08 22:08:15
安装了开发环境, 需要下载那个大佬的stm32的两个文件 一个是支持包,一个是bootloader 并且下载ocrobot的稳定版 借用里面的两个文件 试着编译了几个stm32例子 可以运行 来源: CSDN 作者: doctorlyly 链接: https://blog.csdn.net/doctorlyly/article/details/104740426

Clion下stm32的GDB调试出错

别来无恙 提交于 2020-03-07 11:23:57
Truncated register 16 in remote ‘g’ packet 问题复现 参照网上给出的教程配置了 Clion+openOCD+arm-gcc 的开发环境,但是当我想用 Debug 功能的时候却给出我一个异常代码: Truncated register 16 in remote 'g' packet WTF? 于是乎我就百度,Google各种找,但是就没找到问题的解决办法. 期间有的说把使用 Mingw 32位 可以解决,我试过了无效 解决思路 当时我就在想,我能够正常的编译和烧写,那么我的编译器和 openOCD 配置就没出错 那么问题只可能出在 GDB 身上,但是我这个 GDB 是按照官方的说法使用的是默认的 GDB ,不大可能会出错的啊 想来想去想不明白,那我就只有手动 GDB 调试一下,看下是哪里的问题 然后我就在网上找到了 @Foresights 写的 GDB 的使用教程 这里有几点需要注意一下,因为 Windows 环境下的 openOCD 的 *.cfg 文件集成了 下载器 和 对应板子 两个配置文件,所以我们只需要写一条命令就好了 openocd stm32f4discovery.cfg 注意到我们使用是 arm-none-eabi-gdb 这里最好把openocd的目录和arm-gcc的目录添加进环境变量 然后我就神奇的发现,我的 GDB

STM32中的宏定义及库函数分析

随声附和 提交于 2020-03-07 00:31:41
. 使用KEIL5开发STM32可以使用"GPIOB->ODR"这种方式来给GPIOB的寄存器ODR赋值,因为在STM32中同属于一个外设的所有 寄存器地址基本是相 邻的(有些会有保留寄存器),因此我们可以借助C语言里面的 结构体成员地址递增 的特点来将某个外设的所有寄存器写入到一个结构体里面,然后定义一个结构体指针指向这个外设的寄存器基地址,这样我们就可以通过这个结构体指针来访问这个外设的所有寄存器。 STM32寄存器操作 ST官方为STM32系列处理器都编写了一个stm32f10x.h的文件,通过这个文件定义了STM32的所有外设寄存器。通过引用这个.h文件,我们可以在C文件中方便的找到对应的寄存器。 GPIOE -> CRL & - 0XFF OFFFFF; GPIOE -> CRL = 0X00300000 ; //PE5推挽输出 GPIOE -> ODR = 1 << 5 ; //PE5输出高 可以看出“GPIOE”是个宏定义,是一个指向地址 GPIOE_BASE 的结构体指针,结构体为 GPIO_TypeDef , GPIO_TypeDef 和 GPIOE_BASE 的定义如下 # define GPIOE ((GPIO TypeDef *) GPIOE BASE) typedef struct { __IO uint32_t CRL ; __IO uint32_t

STM32 ADC做触摸按键

陌路散爱 提交于 2020-03-06 18:54:17
一、 12位逐次逼近型ADC转换原理 1、 ADC原理 ADC中输入的模拟信号是连续的,而输出的数字信号是离散的,所以转换时必须对输入的模拟信号进行采样;然后再把采样值转换成为输出的数字信号;这个过程需要经过采样、保持、量化、编码。 前置滤波器 由于采样信号输出的是窄脉冲信号需要抗混叠滤波器来避免高频信号影响基带信号。 采样 是将连续的模拟信号转换成时间上离散的采样信号;需要注意的是;根据奈奎斯特采样定理,采样频率必须大于或者等于2陪的采样信号的频率,才可以完整无失真的恢复被采样信号。 AD转换是通过量化这一步骤完成的, 量化器 是将参考信号Vref分割成2N个子域,N是数字编码输出的位数。在2^N个子域中分别对应着不同的模拟输入量,量化则要找出不同的模拟量对应的子域,找到之后才可以允许编码器编码输出,这样输入信号某一段就会对应到同一个输出码字,是因为有了最小步长也就是精度,产生了一个码字到另一个码字的转换。因此在转换时间内,被采样的模拟输入信号被转换成等价的数子码输出。 分辨率 是ADC可以识别的最小信号变化的能力,有数字和模拟之分。数字分辨是指输出码字的位数,位数越多,分辨率越高。模拟分辨率是指能识别的最小模拟增量。用满刻度表示也就是1bit表示的模拟量,比如:Verf/2^12,取Verf=3.3V,则1bit分辨就是0.8mV。 2、 逐次逼近型ADC 逐次比较型A

STM32外部中断函数

岁酱吖の 提交于 2020-03-06 16:35:23
STM32外部中断函数 在外部中端的 exti.h 文件中 # ifndef _EXTI_H # define _EXTI_H # include "stm32f10x.h" void EXTIX_Init ( void ) ; # endif 在外部中端的 exti.c 文件中 # include "exti.h" # include "led.h" # include "key.h" # include "delay.h" # include "usart.h" # include "beep.h" //外部中断 0 服务程序 void EXTIX_Init ( void ) { EXTI_InitTypeDef EXTI_InitStructure ; NVIC_InitTypeDef NVIC_InitStructure ; KEY_Init ( ) ; //①按键端口初始化 RCC_APB2PeriphClockCmd ( RCC_APB2Periph_AFIO , ENABLE ) ; //②使能 AFIO 时钟 //GPIOE.3 中断线以及中断初始化配置,下降沿触发 GPIO_EXTILineConfig ( GPIO_PortSourceGPIOE , GPIO_PinSource3 ) ; //③ EXTI_InitStructure . EXTI_Line =

STM32 CubeMX 学习:001-GPIO的使用

最后都变了- 提交于 2020-03-06 10:28:04
背景 在上一讲 STM32 CubeMX 学习:搭建开发环境 中,我们已经利用CubeMx搭建了可编译的工程。 今天就开始来介绍STM32 GPIO的有关知识,以及如何驱动它。 HOST-OS : Windows-10 STM32 Cube :v5.6 MCU : STM32F429 LIB : stm32cube_fw_f4_v1250 知识 在STM32中,GPIO有这些属性:输入、输出、复用功能;也可以设置速度,上下拉,推挽开漏等电器特性。 在 Drivers/STM32F4xx_HAL_Driver/Inc/stm32f4xx_hal_gpio.h 中有关于 GPIO属性的 定义。 /** * @brief GPIO Init structure definition */ typedef struct { uint32_t Pin; /*!< Specifies the GPIO pins to be configured. This parameter can be any value of @ref GPIO_pins_define */ uint32_t Mode; /*!< Specifies the operating mode for the selected pins. This parameter can be a value of @ref GPIO

STM32 HAL库 UART使用printf

▼魔方 西西 提交于 2020-03-05 17:53:59
// 添加这个函数 int fputc(int ch,FILE *f) { uint8_t temp[1]={ch}; HAL_UART_Transmit(&UartHandle,temp,1,2); } MDK设置:勾选Use Micro LIB 测试板子:STM32F746NG-DISCOVERY main.c文件 /* Includes ------------------------------------------------------------------*/ #include "main.h" #include <stdio.h> /** @addtogroup STM32F7xx_HAL_Examples * @{ */ /** @addtogroup UART_TwoBoards_ComDMA * @{ */ /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ #define TRANSMITTER_BOARD /* Private macro -----------------------

How can I add I-CUBE-LRWAN libraries to a new project?

荒凉一梦 提交于 2020-03-05 05:40:31
问题 I am working with STM32 B-L072Z-LRWAN1 discovery kit. How can I add I-CUBE-LRWAN libraries externally, after i have created a project on CubeMX for B-L072Z-LRWAN1 discovery kit. Because project which i have created have not radio libraries. I am coding with System Workbench. Before this project, i used Ping-Pong example. It was divergent for create a fresh project. So i am trying to make a new project for Lora. Thanks for answers. 回答1: I'm going to answer it from te point of view of a Keil

Can the STM32H743's FMC drive a 16-bit 8080 bus faster than 1.6MHz when clocked at 480MHz?

随声附和 提交于 2020-03-05 00:39:01
问题 I'm using the FMC of the STM32H743 to drive a 16-bit 8080-bus LCD controller. I've tried using DMA, MDMA and a CPU-loop to transfer data to the 8080-bus, via the FMC. The transfer frequency does not depend on whether DMA, MDMA or CPU-loop is used. This make me think that the DMA/MDMA/CPU-loop is not the limiting factor. At a 480MHz FMC clock, the transfer happens at just 1.6MHz, giving me only 20fps on a 16-bit colour 320x240 LCD. At a 240MHz FMC clock, the transfer happens at just 0.8MHz,

Can the STM32H743's FMC drive a 16-bit 8080 bus faster than 1.6MHz when clocked at 480MHz?

99封情书 提交于 2020-03-05 00:35:08
问题 I'm using the FMC of the STM32H743 to drive a 16-bit 8080-bus LCD controller. I've tried using DMA, MDMA and a CPU-loop to transfer data to the 8080-bus, via the FMC. The transfer frequency does not depend on whether DMA, MDMA or CPU-loop is used. This make me think that the DMA/MDMA/CPU-loop is not the limiting factor. At a 480MHz FMC clock, the transfer happens at just 1.6MHz, giving me only 20fps on a 16-bit colour 320x240 LCD. At a 240MHz FMC clock, the transfer happens at just 0.8MHz,