10 红尘-有梦

尚未进行身份认证

做一个简单的人,平和而执着,谦虚而无畏。

等级
TA的排名 4w+

MD5文件校验

最近一个项目,需要做OTA远程升级,MCU从服务器下载升级文件到本地,进行程序升级。本来如果使用TPC/IP协议传输数据(升级文件)的话,可以不进行文件校验,因为TCP/IP数据传输的时候,为了保证数据的正确性,TCP/IP会进行数据校验。也就是说,我们通过TCP/IP协议接受的数据包,是不需要再次进行校验的。但是这个项目,使用了移远的串口-GPRS模块。MCU通过串口发送AT指...

2020-04-07 11:10:54

如何在Keil开发环境生成bin格式文件

原文连接:https://jingyan.baidu.com/article/219f4bf7ac6d3bde442d38be.html为什么需要BIN文件呢?1、有些烧录器只支持BIN文件。2、进行OTA远程升级时,只能使用BIN文件。3、使用JLink脚本文件进行一键烧录时,只支持BIN文件。4、BIN文件要比HEX和AXF文件小的多。但Keil默认生成的...

2020-02-28 14:12:19

树莓派国外源更新为国内源

树莓派默认为国外源,有时下载很慢。更换为国内源的方法如下,以阿里云为例:1、 更改/etc/apt/sources.list文件 $ sudo vim /etc/apt/sources.list 显示如下:由于版本差异,可能存在一定差别。红色的部分就是源的地址,需要修改的就是这部分,别的不用修改。用 # 号将原来的注释,免得改错了改不回来。我用的阿里...

2019-12-18 17:20:13

STM32 模拟I2C 读取BH1750光照传感器数据

BH1750为光照强度传感器,可测量当前环境下光强度。VCC支持3.3V供电,通过I2C协议与STM32通信。BH1750可直接过开发板相连。以下代码,经过测量,稳定可用。i2c.c文件中的内容如下:/* 配置模拟I2C使用的GPIO*//* PC6配置为SDA,PC7配置为SCL */void I2C_GPIO_Init(void){ GPIO_InitTypeDe...

2019-12-13 10:30:48

STM32 定时器实现非中断延时

STM32使用SysTick定时器和基本定时器实现非中断延时。1. 使用SysTick定时器实现非中断延时SysTick定时器是一个24位的递减计数器。每次使用前,计数器必须先清零,然后计数器从设定的值开始递减。下面的代码经测定,非常稳定。/* 设置延时时间,延时单位为1us*/void delay_us(unsigned int delay_us){ un...

2019-12-04 09:13:54

STM32F103 移植 FreeRTOS系统

1.开发板:STM32F103VET6 指南者2.开发环境:Keil53.FreeRTOS版本: FreeRTOSv10.2.1移植过程:一、使用keil5新建一个固件库工程,建好后效果如下图所示:其中,文件夹FWLIB中包含了工程所需要的固件库的.c文件。如下图所示:假设该工程位于E:\STM32\New Project目录下。二、移植FreeRTOS系统到新...

2019-11-29 15:00:16

STM32总结之定时器

STM32的定时器分为基本定时器、通用定时器和高级定时器。以STM32VET6指南者为例,TIM6、TIM7是基本定时器,TIM2、TIM3、TIM4、TIM5是通用定时器,TIM1和TIM8是高级定时器。定时器的基本功能就是计数,并在适当的时间生成一个时间/更新。 时钟源(TIMxCLK):基本定时器和通用定时器的时钟源都是经过APB1总线时钟的2倍频提供的,为72M...

2019-06-05 11:51:35

STM32总结之系统定时器SysTick

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

2019-06-04 13:24:05

STM32总结之EEPROM AT24C02

一、硬件设计 以上是EEPROM芯片AT24C02的硬件图。SCL和SDA引脚连接到了STM32对应的引脚上,结合上拉电阻,构成了I2C通信总线。EEPROM芯片的设备地址一共由7位,其中高4位固定位1010b,低3位则由A0/A1/A2信号线的电平决定。按照此图的连接,A0/A1/A2均为0,所以EEPORM的7位设备地址是101 0000b。如下图所示,I2C通讯...

2019-05-31 16:51:21

STM32总结之I2C协议

一、I2C物理层 I2C总线有如下特点: 1.在一个I2C总线中,可以连接多个I2C通讯设备,支持多个通讯主机及多个通讯从机。 2.一个I2C总线只使用2条总线线路,一条为双向串行数据线SDA,一条串行时钟线SCL。数据线用来传输数据,时钟线用于数据同步。 3.每个连接到总线上的设备都有一个独立的地址,通讯主机可以用这个地址进行不同设备之间的访问。...

2019-05-30 18:04:21

STM32总结之开启外设时钟

我们知道到,STM32的大多数外设,在使用前都要开启该外设的时钟。下面我们以STM32VET6指南者为例1.点亮LED灯实验时,用到了GPIOB,我们需要开启GPIOB的时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO,ENABLE);//开启GPIOB的时钟N2.使用按键的时候,不论是查询方式,还是中断方式,都用到了GPIOA,所以要开启...

2019-05-28 18:38:58

STM32总结之系统时钟

1.我们都是使用 HSE,然后 HSE经过 PLL倍频之后作为系统时钟。通常的配置是:HSE=8M,PLL 的倍频因子为:9,系统时钟就设置成:SYSCLK = 8M * 9 = 72M。使用 HSE,系统时钟 SYSCLK 最高是 128M。我们使用的库函数就是这么干的, 当程序来到 main 函数之前,启动文件:statup_stm32f10x_hd.s 已经调用 SystemInit(...

2019-05-28 18:22:27

STM32总结之GPIO 常用库函数

配置相关函数1.void GPIO_Init (GPIO_TypeDef* GPIOx,GPIO_InitTypeDef* GPIO_InitStruct)函数解释:GPIO的初始化函数,该函数的作用是对io进行初始化。参数:(1)GPIOx,GPIO的分组,如 GPIOA,GPIOB,GPIOC等的宏定义。 (2)GPIO_InitStruct,GPIO的初始化相...

2019-05-28 18:19:47

STM32总结之GPIO编程过程

用寄存器点亮LED的过程1:通过原理图找到要点亮的LED灯对应的GPIO口2.通过stm32手册找到要操作的寄存器,找到这个GPIO的基地址, 基地址+地址偏移 = 目标寄存器的地址3.编码 1.打开对应的GPIO的时钟。 2.通过操作CRL寄存器将对应的GPIO口设置为推挽输出模式,并设置一 个翻转速度 3.通过操作ODR寄存器,将电平置高或置低。...

2019-05-28 18:16:46

ubuntu 18.04 LTS软件安装

1.安装vim sudo apt-get install vim2.安装gcc 1).sudo add-apt-repository ppa:unbutu-toolchain-r/test 2).sudo apt-get update 3).sudo apt-get install gcc 4).gcc -v...

2019-04-29 09:58:14

C语言文件打开模式浅析

转载于https://www.cnblogs.com/kangjianwei101/p/5220021.html在C语言的文件操作语法中,打开文件文件有以下12种模式,如下图: 打开模式 只可以读 只可以写 读写兼备 文本模式 r w ...

2019-04-24 16:25:16

c语言实现简单计算器功能

有段时间没怎么写代码了,今天用VS2010写了一个用C语言实现简单计算器功能的代码,用来找找感觉。功能本身很简单,网上例子很多,但因为是用标准终端输入和输出的,当输入错误数据时,会出现很多问题。所有添加了一个fflush函数,清除标准输入缓冲区,用来实现容错功能。标准输入缓冲区的意思是,当用户在终端输入时,当用户输入\n(回车键)时,用户之前的输入被一并送到终端的标准输入缓冲区...

2019-04-23 13:45:51

win7+ubuntu18.04LTS安裝摘要

1. U盘烧录工具为UltraISO,用该工具将ubuntu的ISO文件烧录到U盘中去(网上参考资料很多)。电脑设置为U盘启动(网上参考资料很多),U盘启动后出现“Failed to load ldlinux.c32,Boot failed”,原因是使用UltraISO向U盘刻录映像时,写入方式应该选择RAW格式,不要用别的格式。2.U盘启动后,安装ubuntu系统时,有几个选项,为...

2019-04-22 17:32:09

ARM Cortex-M3 存储器映射

在4GB的地址空间中,ARM Cortex-M3已经粗线条的平均分成了8快,每块512MB,每块也都规定了用途。每个快的大小都有512MB,显然这个非常大的,芯片厂商在每个块的范围内设计各具特色的外设时,并不一定都用得完,都只是用了其中的一部分而已。Cortex-M3的存储器映射如下图所示: 在这8个Block里面,由3个Block非常重要,也是我们最关心的三个块...

2019-04-19 09:23:25

STM32 通用输入输出 GPIO工作模式

GPIO工作模式 GPIO的结构决定了GPIO可以配置成8种模式: typdedf enum { GPIO_Mode_AIN = 0x0, // 模拟输入 //ADC GPIO_Mode_IN_FLOATING = 0x4, // 浮空输入 //按键检测 ...

2019-04-17 16:13:14

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。