STM32
thomas_blog
路漫漫其修远兮
展开
-
STM32 掉电检测程序
当VDD下降到PVD阀值以下或当VDD上升到PVD阀值之上时,根据外部中断第16线的上升/下降边沿触发设置,就会产生PVD中断void PVD_IRQHandler(void){ led_ctrl(LED1, ON); if(PWR_GetFlagStatus(PWR_FLAG_PVDO)) { MSD0_WriteSingleBlock(1, buf); ...原创 2019-09-22 13:36:22 · 4897 阅读 · 0 评论 -
zubax_gnss简介
目录结构 bootloader:主要功能是升级application、加载application和初始化application需要的一些参数 firmware:bootloader状态机 bootloader libcanard:CAN总线安全工具,用于CAN升级application使用 src:bootloader关键处理代码 zubax_chibios:与chib转载 2017-11-11 16:12:43 · 1510 阅读 · 0 评论 -
stm32 CAN过滤器组
在互联型产品中, CAN1和CAN2分享28个过滤器组 其它STM32F103xx系列产品中有14个过滤器组位宽设置 四种配置方式: 1个32位的屏蔽位模式 2个32位的标识符列表模式,可以过滤2个标识符id 2个16位的屏蔽位模式 4个16位的标识符列表模式,可以过滤4个标准标识符id扩展标识符必须选择32位宽标识符列表模式 在标识符列表模式下,屏蔽寄存器也转载 2017-11-09 13:47:14 · 3851 阅读 · 0 评论 -
stm32 CAN通信 TJA1040
CAN协议特点1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作2.系统的柔软性 与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变3.通信速度较快,通信距离远 最高 1Mbps(距离小于40M转载 2017-08-19 14:42:27 · 13949 阅读 · 3 评论 -
stm32 SPI-FLASH W25Q64
The W25Q64BV array is organized into 32,768 programmable pages of 256-bytes each. Up to 256 bytes can be programmed at a time. Pages can be erased in groups of 16 (sector erase), groups of 128 (32KB bl转载 2017-08-22 15:32:56 · 4720 阅读 · 0 评论 -
stm32 i2c eeprom 24C02
电路图 相关文章:http://blog.csdn.net/zhangxuechao_/article/details/74936798举例#define i2c_scl PBout(10)#define i2c_sda PBout(11)#define i2c_ack PBin(11)void I2C_init(){ GPIO_InitTypeDef gpio10 = {转载 2017-08-16 18:28:11 · 722 阅读 · 0 评论 -
STM32工程模版
STM32工程模版,看过来ST库源码去官方下载 创建工程目录 doc:存放说明文档 lib:存放库文件 listing:存放编译产生的中间文件 output:存放生成的文件 project:存放工程文件 user:存放用户文件。自己编写的源文件拷贝库文件 cmsis存放ARM公司提供的内核函数接口文件,fwlib存放st公司提供的函数接口文件 拷贝到转载 2017-08-04 11:16:36 · 494 阅读 · 0 评论 -
STM32F10x芯片类型 STM32F10X_LD STM32F10X_MD STM32F10X_HD STM32F10X_XL STM32F10X_CL
stm32f10x.h 固件库stm32f10x.h中有如下解释#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) && !defined (STM32F10X_HD) && !defined (STM32F10X_HD_转载 2017-11-08 21:33:25 · 6004 阅读 · 0 评论 -
stm32 SysTick系统定时器
它是一个24位向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自系统时钟,还可以通过系统时钟8分频后获取 当定时器计数到0时,将从LOAD 寄存器中自动重装定时器初值,重新向下递减计数 如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信号void SysTick_Init(u8 SYSCLK){ SysTick_CL转载 2017-08-09 09:04:45 · 512 阅读 · 0 评论 -
..\USER\stm32f10x.h(428): error: #67: expected a "}" ADC1_2_IRQn = 18, /*!<
MDK软件编译,出现如下错误:..\USER\stm32f10x.h(428): error: #67: expected a "}" ADC1_2_IRQn = 18, /*!< ADC1 and ADC2 global Interrupt */..\USER\stm32f10x.h(472): war转载 2017-11-07 13:11:55 · 13348 阅读 · 1 评论 -
FreeRTOS 基础简介
下载地址 http://www.freertos.org/目录结构# ls -ltotal 28drwx------ 5 pi pi 4096 Sep 16 04:17 FreeRTOSdrwx------ 4 pi pi 4096 Sep 16 04:18 FreeRTOS-Plus-rwx------ 1 pi pi 141 Jan 16 2015 New - Direct to转载 2017-09-16 11:42:25 · 742 阅读 · 0 评论 -
FreeRTOS 移植
添加FreeRTOS源码到工程中 在工程源码中创建FreeRTOS目录存放拷贝的文件 拷贝FreeRTOS->Source中的文件 可将其他不需要的文件夹全部删掉,只留3个 拷贝Demo中FreeRTOSConfig.h配置文件 放在user目录下,不然编译报错。后续将对此文件详细介绍 添加到工程中,这里也采用heap_4.c内存管理方式 添加头文件路径 修改startup代码(必须转载 2017-09-17 17:02:46 · 372 阅读 · 0 评论 -
ChibiOS/RT移植到STM32F407
官网地址:http://www.chibios.org/dokuwiki/doku.php下载源码找到STM32F407的demos程序(chibios\demos\STM32\RT-STM32F407-DISCOVERY)/* * This is a periodic thread that does absolutely nothing except flashing * a LED. *转载 2017-11-04 22:22:15 · 3840 阅读 · 0 评论 -
zubax_gnss移植到STM32F407
源码下载:https://github.com/Zubax/zubax_gnss.git源码默认支持STM32F107芯片 STM32 HAL库测试:zubax_gnss\bootloader\zubax_chibios\chibios\testhal\STM32 STM32 ChibiOS/RT系统测试:zubax_gnss\bootloader\zubax_chibios\chibios\d转载 2017-11-04 22:44:27 · 1849 阅读 · 1 评论 -
STM32 IAP 升级功能
IAPIn Application Programming可通过USB,CAN,UART,I2C,SPI等接口实现IAP流程Bootloader程序:接收升级程序,更新到flash指定地址;跳转到指定地址执行STM32设置①:为Bootloader预留0x10000空间②:设置APP程序的起始地址③:中断向量表的偏移量设置④:生成bin文件详见:https://blog....原创 2019-08-25 17:23:29 · 535 阅读 · 0 评论 -
Keil MDK fromelf生成bin文件
找到Keil安装目录中fromelf.exe 配置Keil –bin:二进制文件 –i32:Intel 32位Hex –m32:Motorola 32位Hex转载 2017-12-07 11:58:34 · 603 阅读 · 0 评论 -
SPL06-001 气压计
歌尔是全球领先的MEMS厂家,最新推出新款气压传感器SPL06-001,定位精度可达5cm手册地址 https://download.csdn.net/download/zhangxuechao_/10548473 寄存器 举例//气压测量速率(sample/sec),Background 模式使用#define PM_RATE_1 (0&amp;amp;amp;lt;&amp;amp;amp;l...转载 2018-07-18 12:22:34 · 18280 阅读 · 29 评论 -
UAVCAN DSDL介绍
原文:http://uavcan.org/Specification/3._Data_structure_description_language/DSDL:Data structure description language实际上,就是自动生成的C++格式的数据结构。用来定义UAVCAN中的各种类型的消息。个人认为就是看着更清晰,理解起来更容易,也是UAVCAN的设计思想。使用C代码也...转载 2018-03-20 18:46:25 · 4593 阅读 · 5 评论 -
linux搭建stm32开发环境
下载stm32固件库 创建目录 libs目录放stm32固件库,src放用户源码,inc放用户头文件# mkdir libs src inc复制文件 将STM32F10x_StdPeriph_Lib_V3.5.0复制到libs目录下 创建Makefile.common 在主目录下创建Makefile.common文件,这个是通用Makefile文件#This ...转载 2018-03-02 14:25:16 · 5382 阅读 · 2 评论 -
stm32 ADC模数转换 ADC多通道 ADC DMA
通过调节电位器,改变AD转换值和电压值STM32F1 ADC 配置步骤 1.使能GPIO时钟和ADC时钟 2.配置引脚模式为模拟输入 3.配置ADC的分频因子 4.初始化ADC参数,ADC_InitTypeDef 5.使能ADC 6.执行ADC校准 7.设置ADC软件启动 8.读取ADC转换值 9.设置ADC规则,采样时间等 10.转载 2017-08-14 13:43:24 · 4228 阅读 · 0 评论 -
stm32 usart 串口
比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符, 而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:10位 × 240个/秒 = 2400bpsUSART 串口通信配置步骤 1.使能串口时钟 2.使能GPIO端口时钟 3.GPIO端口模式设置 4.初始化串口参数,波特率、 数据位、 停止转载 2017-08-11 12:51:02 · 1819 阅读 · 0 评论 -
ROMTableAddr = 0xE00FF003 错误 Target DLL has been cancelled 错误
JTAG下载固件错误 keil下载固件错误如下错误* JLink Info: Found SWD-DP with ID 0x1BA01477* JLink Info: Found SWD-DP with ID 0x1BA01477* JLink Info: Found Cortex-M3 r1p1, Little endian.* JLink Info: FPUnit: 0 cod转载 2018-01-26 16:25:52 · 2342 阅读 · 2 评论 -
stm32 USART_IT_IDLE中断 一帧数据
USART_IT_IDLE中断,是串口收到一帧数据后,发生的中断。也可以叫做一包数据USART_IT_IDLE和USART_IT_RXNE区别 当接收到1个字节,会产生USART_IT_RXNE中断 当接收到一帧数据,就会产生USART_IT_IDLE中断清中断方法//USART_IT_RXNEUSART_ClearITPendingBit(USART1, USART_IT转载 2018-01-22 10:48:32 · 25304 阅读 · 4 评论 -
stm32F1 DMA
DMA,全称是Direct Memory Access,中文意思为直接存储器访问DMA可用于实现外设与存储器之间或者存储器与存储器之间数据传输的高效性DMA请求映像 各通道的DMA1请求: 各通道的DMA2请求: DMA配置步骤 1.使能DMA控制器时钟 2.初始化DMA通道,DMA_InitTypeDef 3.使能外设DMA功能 4.开启DMA的通原创 2017-08-14 22:53:15 · 1117 阅读 · 0 评论 -
uavcan扩展帧格式 zubax
zubax_gnss_1.0和zubax_gnss_2.0中使用的uavcan的两种不同封装方式。都是采用扩展帧29b帧类型zubax_gnss_1.0 我的代码:https://github.com/zwx230741/zubax_gnss/tree/release_1.0 last_frame:判断是不是最后一包 frame_index:包计数 src/dst_node_id:转载 2017-11-14 17:06:08 · 2379 阅读 · 1 评论 -
stm32 外部中断
STM32F10x芯片有84个中断通道,包括 16 个内核中断和 68 个可屏蔽中断NVIC NVIC英文全称是Nested Vectored Interrupt Controller,中文意思就是嵌套向量中断控制器,它属于M3内核的一个外设,控制着芯片的中断相关功能。由于ARM给NVIC预留了非常多的功能,但对于使用M3内核设计芯片的公司可能就不需要这么多功能,于是就需要在NVIC上裁剪。ST公转载 2017-08-09 22:42:37 · 721 阅读 · 0 评论 -
FreeRTOS config开始的宏
FreeRTOSConfig.h系统配置文件中的内容configAPPLICATION_ALLOCATED_HEAP 默认情况下FreeRTOS的堆内存是由编译器来分配的,将宏configAPPLICATION_ALLOCATED_HEAP定义为1的话堆内存可以由用户自行设置(heap_1.c、heap_2.c、heap_3.c、heap_4.c和heap_5.c)/* Allocate the转载 2017-09-17 21:56:57 · 1249 阅读 · 0 评论 -
stm32 窗口看门狗 WWDG
窗口看门狗WWDG其实和独立看门狗类似,它是一个7位递减计数器不断的往下递减计数,当减到一个固定值0x40时还不喂狗的话,产生一个MCU复位,这个值叫窗口的下限,是固定的值,不能改变窗口看门狗(WWDG)的时钟来自PCLK1,即挂接在APB1总线上,APB1时钟最大为36M窗口值由配置寄存器WWDG_CFR的[6:0]位设置,所以最大值0x7F当递减计数器递减到0x40的时候,还不会马上产生复位,如转载 2017-08-11 23:38:50 · 584 阅读 · 0 评论 -
stm32 独立看门狗 IWDG
独立看门狗IWDG 独立看门狗简单理解就是一个12位递减计数器,当计数器从某一个值递减到0时,系统就会产生一次复位独立看门狗由专用低速时钟LSI驱动,其频率一般在30-60KHz之间,通常选择40KHz作为IWDG时钟IWDG配置步骤 1.开启寄存器访问 2.设置预分频因子 3.设置重装载值 4.看门狗计数器重装载值 5.开启IWDG举例void IWDG_init(转载 2017-08-11 18:09:55 · 415 阅读 · 0 评论 -
stm32 定时器 通用定时器
STM32F10xxx 2个基本定时器(TIM6、TIM7) 4个通用定时器(TIM2、 TIM3、 TIM4和TIM5) 2个高级定时器(TIM1、TIM8)每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作TIMx主要功能 16位向上、向下、向上/向下自动装载计数器 16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65536之间的原创 2017-08-10 14:34:04 · 914 阅读 · 0 评论 -
stm32 printf重定向
printf函数调用fputcint fputc(int ch, FILE *p){ USART_SendData(USART1, ch); //重定向到串口 while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET); return ch;}在KEIL中使用printf要勾选“微库”转载 2017-08-11 16:00:47 · 380 阅读 · 0 评论 -
STM32点亮LED
原理图 测试灯,接GPIO外设B,Pin 12 举例 前提,工程模版建立好#include "stm32f10x.h"void delay(u32 i){ while(i--);}void led_init(){ GPIO_SetBits(GPIOB, GPIO_Pin_12); //设置数据端口 delay(6000000); GPIO_ResetBit转载 2017-08-04 13:01:24 · 792 阅读 · 0 评论 -
stm32 PWM
脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术高级定时器可以同时产生多达7路的PWM输出 而通用定时器也能同时产生多达4路的PWM输出脉冲宽度调制模式可以产生一个由TIMx_ARR寄存器确定频率、由TIMx_CCRx寄存器确定占空比的信号PWM边沿对齐模式 当TIMx_CNT小于TIMx_CCRx时PWM信号参考OCxREF为高,否则为低。如果TIMx_CCRx中的原创 2017-08-10 22:10:34 · 727 阅读 · 0 评论 -
stm32 红外
相关文章:http://blog.csdn.net/zhangxuechao_/article/details/75039906举例u8 ir_tick() //记录高电平时间{ u8 i = 0; while(ir_in == 1) { i++; if(i >= 250) { break;转载 2017-08-18 09:17:15 · 862 阅读 · 0 评论 -
KEIL仿真出现 EVALUATION MODE
原因是没有破解,重新破解即可转载 2017-08-03 22:36:11 · 7694 阅读 · 0 评论 -
STM32启动BOOT0 BOOT1设置方法
原理图 启动方式 第一种启动方式是最常用的用户FLASH启动。默认启动方式 第二种启动方式是STM32内嵌的SRAM启动。该模式用于调试 第三种启动方式是系统存储器启动方式,不建议使用这种,速度比较慢。STM32中自带的BootLoader就是在这种启动方式中,如果出现程序硬件错误的话可以切换BOOT0/1到该模式下重新烧写Flash即可恢复正常转载 2017-08-03 20:08:50 · 5015 阅读 · 0 评论 -
stm32 ds18b20 温度传感器
相关文章:http://blog.csdn.net/zhangxuechao_/article/details/74991985举例void DS18B20_in(){ GPIO_InitTypeDef gpio = { GPIO_Pin_11, GPIO_Speed_50MHz, GPIO_Mode_IPD };转载 2017-08-17 16:40:26 · 2534 阅读 · 2 评论 -
stm32 按键操作
抖动时间的长短由按键的机械特性决定,一般为5ms~10msvoid key(){ static u8 flag = 1; if(flag == 1 && KEY_UP == 1) { delay_ms(10); if(KEY_UP == 1) { flag = 0; led1 =转载 2017-08-09 12:06:24 · 1396 阅读 · 0 评论 -
stm32 输入捕获
根据定时器的计数频率,我们就可以算出t1-t2的时间,从而得到高电平脉宽输入捕获配置步骤 1.使能定时器时钟 2.使能GPIO时钟,设置引脚模式 3.初始化定时器参数,预分频器的值、自动重装载的值等设定 4.设置通用定时器的输入捕获参数,开启输入捕获功能 5.开启捕获和定时器溢出中断 6.初始化NVIC外设,设置定时器中断优先级 7.使能定时器 8.编写原创 2017-08-13 13:48:07 · 1275 阅读 · 0 评论 -
stm32 待机模式
低功耗模式 降低系统时钟速度 不使用APBx和AHB外设时,将对应的外设时钟关闭 睡眠模式(Cortex™-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时钟(SysTick)等仍在运行) 停止模式(所有的时钟都已停止) 待机模式(1.8V内核电源关闭)转载 2017-08-13 17:07:07 · 995 阅读 · 0 评论