stm32

Error in initializing ST-Link Device

佐手、 提交于 2020-01-13 16:24:33
问题 I am currently using the ST-Link debugger to program my STM32F3 Discovery Board. The IDE that I am using is Atollic TrueStudio 5.5.2 but now I am facing a very weird problem which is I keep on getting the message " Error in initializing ST-Link Device. Reason : (-1) Failed to connect to device . Please check power and cabling to target." whenever I want to download the program into my STM32. I had tried some solutions that I found from internet but the problem still exists. Anyone had faced

micropython compiling with arm-none-eadi- in cygwin

六月ゝ 毕业季﹏ 提交于 2020-01-13 09:48:59
1. Download & Decompression 1.1 download micropython path: http://micropython.org/download/ Note: 使用公司的网络git没有安全认证,没有搞定网络,索性就直接下载完整包,本地解压 ~/micropython $ git clone https://github.com/micropython/micropython Cloning into 'micropython'... remote: Enumerating objects: 75723, done. remote: Total 75723 (delta 0), reused 0 (delta 0), pack-reused 75723 Receiving objects: 100% (75723/75723), 41.91 MiB | 18.00 KiB/s, done. Resolving deltas: 100% (54847/54847), done. Checking out files: 100% (3427/3427), done. 1.2 download gcc-arm-none-eadi compiler Path: https://developer.arm.com/tools-and-software

stm32基于hal库的蓝牙串口通信

余生长醉 提交于 2020-01-13 05:15:43
关于stm32的学习记录 stm32基于hal库的蓝牙串口通信 先简单记录一下用到的工具: stm32f103c8t6,st-link,usb-ttl,蓝牙模块hc-05、hc-06 本次设计模型使用手机蓝牙APP向蓝牙发送指令,stm32最小系统通过串口接收到的指令选择要执行的步骤以控制小车运动。鉴于本次仅仅使用蓝牙接收指令,并不需要用单片机来调试蓝牙模块,所以没有写相关代码,如有需要后续补充。 1、通过cubemx配置stm32 设置外部晶振 设置四线调试模式 设置时钟 其余设置(中断,定时器配置pwm)按需要配置 2、添加相关自定义代码,以实现串口通信,pwm调速功能 1.开启pwm HAL_TIM_PWM_Start ( & htim3 , TIM_CHANNEL_1 ) ; HAL_TIM_PWM_Start ( & htim3 , TIM_CHANNEL_2 ) ; 2,设置串口重定向,后面可以用于测试代码,测试单片机接收数据的格式 int fputc ( int ch , FILE * f ) { HAL_UART_Transmit ( & huart1 , ( uint8_t * ) & ch , 1 , 0xffff ) ; return ch ; } int fgetc ( FILE * f ) { uint8_t ch = 0 ; HAL_UART

STM32学习系列之GPIO的八种工作模式

冷暖自知 提交于 2020-01-12 23:55:12
一、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。 推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。 二、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点: 1、利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。 2、一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。) 3

STM32的GPIO的8种工作模式

爷,独闯天下 提交于 2020-01-12 23:54:29
GPIO GPIO的英文全称General-Purpose Input /Output Ports,中文意思是通用I/O端口。 GPIO 的八种工作模式, (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 上拉输入、下拉输入: 上拉就是使IO口接上拉电阻到VCC了,跟51一样,下拉就是使IO口接下拉电阻到GND了,浮空就是即不接上拉,也不接下拉,这样的话IO默认输入电平不确定,上拉就是输入高电平,然后接一个上拉电阻(起保护作用),在你目前开发学习时,只需要知道上拉就表示该端口在默认情况下输入为高电平,下拉就相反了,指输入接低电平,然后接一个下拉电阻(关于上拉电阻与下拉电阻,设计比较多的数电模电知识,此处就略过,反正其保护电路的作用), 浮空: 顾名思义,就相当与此端口在默认情况下什么都不接,呈高阻态,这种设置在数据传输时用的比较多, 推挽输出 : 可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制

stm32之GPIO(二)

我只是一个虾纸丫 提交于 2020-01-12 23:23:30
  输入上拉:当IO口作为输入时,比如按键输入,而按键是与地连接,按下时为低电平,则没按下时该IO口应为高电平,上拉即是该IO口通过一个电阻与电源相连,则没按下时为高电平,按下即为低电平。 输入下拉:同理此时按键与电源相连,按下即为高电平,下拉就是该IO口通过一个电阻与地相连,没按下为低电平,按下为高电平。    推挽输出:作为普通的IO口输出高低电平   STM32的输入输出管脚有下面8种可能的配置:(4输入、2输出、2复用输出)     1、浮空输入_IN_FLOATING     2、带上拉输入_IPU     3、带下拉输入_IPD     4、模拟输入_AIN     5、开漏输出_OUT_OD     6、推挽输出_OUT_PP     7、复用功能的推挽输出_AF_PP     8、复用功能的开漏输出_AF_OD 上拉:输入高电平,然后接一个上拉电阻(起保护作用),上拉就表示该端口在默认情况下输入为高电平; 浮空:就相当于此端口在默认情况下什么都不接,呈高阻态; 开漏输出:就是不输出电压,低电平时接地,高电平时不接地。如果外接上拉电阻,则在输出高电平时电压会拉到上拉电阻的电压电压。这种方式适合在连接的外设电压比单片机电压低的时候; 推挽输出:就是单片机引脚可以直接输出高电平电压,低电平时接地,高电平时输出单片机电源电压。这种方式可以不接上上拉电阻

STM32 移植 STemwin(Touch)

佐手、 提交于 2020-01-12 23:18:21
上篇讲到了STemwin的基本移植步骤,这里再讲下Touch的支持。 驱动好自己的触摸屏,准备好测量X,Y 返回为ADC值的函数。这个一般也不难 准备好GUI_TOUCH_X.C文件,这里比较坑的就是这个文件没有包含在STemwin的包里面(至少5.32里面没有),需要自己写一个,其实内容很简单,如下 #include "GUI.h" #include "XPT2046.h" void GUI_TOUCH_X_ActivateX(void) { } void GUI_TOUCH_X_ActivateY(void) { } int GUI_TOUCH_X_MeasureX(void) { return XPT2046_READ_X(); } int GUI_TOUCH_X_MeasureY(void) { return XPT2046_READ_Y(); } 添加好X,Y的测量函数, x,y的Activate函数可以空。 回到LCDConf_FlexColor_Template.c文件中增加触屏的校准函数。 #define TOUCH_AD_LEFT 3930 //触摸左上角x轴的AD值(注意是AD值,也叫物理坐标) #define TOUCH_AD_RIGHT 166 //触摸屏幕右下角边x轴的AD值 #define TOUCH_AD_TOP 3930 //触摸左上角y轴的AD值

STM32之USART学习

烈酒焚心 提交于 2020-01-12 22:58:49
一、 串口的基本知识 串口的基本知识,可以参考如下文章: a. 串口基础知识文章1 b. 串口基础知识文章2 二、STM32配置USART 下面是配置USART过程的思维导图,如下: 下面是各个过程的具体实现过程,并带有注释。 (1)USART对应GPIO配置 具体代码如下: GPIO_InitTypeDef GPIO_InitStructure ; //定义GPIO结构体 /*开启时钟*/ RCC_APB2PeriphClockCmd ( RCC_APB2Periph_GPIOA , ENABLE ) ; //UART发送端PA9引脚初始化 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_9 ; GPIO_InitStructure . GPIO_Mode = GPIO_Mode_AF_PP ; //设置为复用推挽输出 GPIO_InitStructure . GPIO_Speed = GPIO_Speed_50MHz ; GPIO_Init ( GPIOA , & GPIO_InitStructure ) ; //UART接收端PA10引脚初始化 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_10 ; GPIO_InitStructure . GPIO_Mode = GPIO_Mode_IN_FLOATING

STM32外部中断

我是研究僧i 提交于 2020-01-12 21:30:46
STM32外部中断 STM32有19个外部中断:线0-15对应外部IO口的输入中断;线16连接PVD输出;线17连接RTC闹钟事件;线18连接USB唤醒事件。 GPIO与中断线的映射关系:GPIOx.0映射到EXTI0,GPIOx.1映射到EXTI1;以此类推。 使用外部中断需要使能AFIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 还要设置IO口与中断线的映射关系:(例)GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5); 然后设置中断的触发模式等初始参数 然后设置NVIC中断优先级 设置完中断优先级后就是编写中断服务函数,STM32的IO口外部中断函数只有6个,中断线0-4分别对应一个中断服务函数,中断线5-9共用一个,10-15公用一个,如图: 注意 :设置中断优先级分组需要在主函数中调用相关函数设置,一定要记住初始化函数(初始化延时、按键、LED) 在编写完中断服务函数之后要清楚中断标志位,如图: 外部中断函数 # include "exti.h" //exti.c文件 # include "led.h" # include "key.h" # include "delay.h" # include "usart.h" //外部中断初始化函数

How do I use the STM32CUBEF4 HAL library to read out the sensor data with i2c?

家住魔仙堡 提交于 2020-01-12 08:26:15
问题 I want to use the latest HAL library instead of Standard Peripheral Library. And i want to readout the BMA250E G-sensor's chip_id, but it doesn't work. Value of aRxBuffer always keep at 0x00. But it should be 0xf9! What's wrong in my code? ‪#‎include‬ "stm32f4xx_hal.h" #define I2Cx_SDA_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE() #define I2Cx_SDA_PIN GPIO_PIN_9 #define I2Cx_SDA_GPIO_PORT GPIOB #define I2Cx_SDA_AF GPIO_AF4_I2C1 #define I2Cx_SCL_GPIO_CLK_ENABLE() __HAL_RCC_GPIOB_CLK_ENABLE()