自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (10)
  • 收藏
  • 关注

原创 常见的基本排序算法

1.冒泡排序a. 比较相邻的元素。如果第一个比第二个大,就交换它们两个;b.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;c.针对所有的元素重复以上的步骤,除了最后一个.d.重复a-c,直到排序完成function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len - 1; i++) { .

2020-09-08 19:51:11 168

原创 常见的基本数据结构

1.线性表1.1数组1.2链表2.栈和队列2.1栈2.2队列3.树和二叉树4.图

2020-09-08 16:33:57 412

原创 opencv之图像识别(1)

opencv 提供了cvtColor()函数,用于在图像中不同的色彩空间进行转换,用于后续处理。void cvtColor( InputArray src, OutputArray dst, int code );1. 图像色彩模式a. 位图模式位图模式是图像中最基本的格式,图像只有黑色和白色像素,是色彩模式中占有空间最小的,同样也叫做黑白图,它包含的信息量最少,无法包含图像中的细节,...

2020-04-10 21:24:17 3285

原创 基于STM32F746的MQTT实现

一.简述MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物...

2019-11-25 11:58:32 1279

原创 keil5如何将代码打包为lib文件

对于某些需要加密的.c代码,keil软件提供了打包为lib文件的方法,便于移植和调用。1.新建GROUP将所有需要打包的.c文件copy到该group中,需要确保这些.c文件的相对独立性,即包含.h文件即可调用。其他如中断类的.c文件无法打包。2.打包设置右键那些不需要打包的组,去掉 include in Target Build前的对勾。系统设置中,output一栏选择Cre...

2019-10-09 08:52:33 4959 5

原创 17.LWIP学习

很久没更新了,最近花了点时间研究了下LWIP,看着很复杂,实际也还好。LWIP学习推荐看野火的资料,如果加freertos操作系统的话直接利用cubemx生成即可,省心省力。先开个头,后面有时间再编辑详细介绍。1.简介LWIP是轻量化的 TCP/IP协议,包括无操作系统运行(RAW)和有操作系统运行。官方源码下载地址:http://download-mirror.savanna...

2019-05-13 18:17:56 955

转载 mysql sql语句大全2

select * from emp;  #注释#---------------------------#----命令行连接MySql--------- #启动mysql服务器net start mysql #关闭 net stop mysql  #进入mysql -h 主机地址 -u 用户名 -p 用户密码 #退出exitstatus;显示当前mysql的vers...

2019-02-23 15:09:01 127

转载 mysql sql语句大全1

1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开...

2019-02-23 15:08:07 167

原创 HAL库学习之阶段性总结

很久没写博客了,一晃都三四个月了。HAL库基本上算是弄懂了,中间抽时间研究了下UCOSII操作系统和CADENCE画原理图。接下来的目标:1.HAL库其他的外设,CAN,PWM,网口2.CADENCE画PCB(或者AD)...

2018-12-27 11:32:03 545

原创 16.HAL库之SPI和QSPI

1.SPI协议(以RN8302为例)SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线(SCSN,SCLK,SDI,SDO).总结传输流程:a.写时序SCSN拉低,开启通讯。主机依次写入地址,命令,数据(高位在前,低位在后),CS校验。主机在SCLK下降沿将数...

2018-11-08 17:20:36 17889

原创 HAL库之485+DMA通信(STM32F746)

很让人无语,一个简单的485卡了很久。虽然简单,但通过调485通信可以总结很多调试经验:1.首先一定要保证硬件正确,包括接线,工具正常;2.其次基本配置一定要正确,例如此次配置485的时候,可以实现DMA发送,却不能实现接收。而同样的串口参数配置使用中断方式和232接口都能实现发送接收,个人判断是是接收DMA部分配置有问题,结果卡了很久才发现是基本的管脚配置有误。485的三根引脚要配置成推...

2018-11-05 19:24:15 5827 2

原创 15-HAL库之定时器学习

1.基本定时器(TIM6/TIM7)包含时钟源(CK_INT),1个16位自动重载递增计数器(CK_ARR),1个16位可编程预分频器(CK_PSC),计数器寄存器(CK_CNT),触发DAC的控制器组成。时钟源为APB外设时钟,定时事件生成事件主要由CK_PSC和CK_ARR两个寄存器值觉得。例如需要1s延时,时钟源周期为100us,设置CK_ARR为9999,CK_CNT从0开始到99...

2018-10-23 10:35:53 3264

原创 14-HAL库之I2C通信

1.I2C协议介绍I2C是一个支持多设备的总线,可连接多个I2C通讯设备,每个总线包括一条双向串行数据线(SDA)和一条串行时钟线(SCL)。数据线用来表示数据,时钟线用来数据收发同步。通讯过程如下:S:主机的I2C接口产生的传输开始信号,连接在I2C总线上的所有从机都会接收到。SLAVE_ADDRESS:主机广播的从机地址信号,I2C总线上每个从机地址唯一。R/W:读写方向,...

2018-10-18 19:40:20 21707 5

原创 13-HAL库DMA系统总结

1.间接DMA:Direct Memory Access,直接存储访问,实现数据在外设与存储器或存储器之间高速访问,数据移动过程无需CPU操作控制,因此可以大大解放CPU负担。外设(ADC、SPI、I2C、DCMI等外设的数据寄存器),存储器(片内SRAM、外部存储器、片内Flash等等)。外设到存储器,例如将AD转换的数据转移到所定义的存储区中。存储器到外设多用于外设的发送通信,例如串口...

2018-10-17 21:39:37 5276

原创 ucosiii学习(4)——中断和时钟

1.中断系统收到中断请求后,若CPU处于中断允许状态,则中止当前任务,转去运行中断子程序。中断子程序运行结束后,返回被中止的任务继续运行或者转向优先级更高的任务。UCOSIII支持中断嵌套,即高优先级的中断可以打断低优先级的中断,在UCOSIII中使用OSIntNestingCtr来记录中断嵌套次数,最大支持250级的中断嵌套,每进入一次中断服务函数OSIntNestingCtr就会加1,当退...

2018-10-11 20:21:48 616

原创 ucosiii学习(3)——任务调度和时间片轮转

1.任务级调度器 OSSched()系统初始化后会自动创建几个任务,可以看到所调用的创建任务函数OSTaskCreate的最后都会调用OSSched()函数(任务级调度器)。Description: This function is called by other uC/OS-III services to determine whether a new, high priority ta...

2018-10-11 18:54:07 2666

原创 ucosiii学习(2)——系统初始化时所创建的任务

1.空闲任务OS_IdleTaskInit(p_err);      os_core.c中系统在初始化过程中,会先创建一个空闲任务,在创建空闲任务时先初始化任务控制块和链表,然后进行优先级和就绪链表插入操作(OS_PrioInsert和OS_RdyListInsertTail),同时将任务计数加一(OSTaskQty++;  ),最后调用OSSched()函数。这个任务几乎不做什么事情,只...

2018-10-11 17:59:46 1362

原创 ucosiii学习(1)——系统简介和初始化

ucosiii属于可剥夺型内核,CPU总是运行多个任务中优先级最高的那个任务。当CPU正运行某个低优先级任务时,若有高优先级任务准备就绪,该高级别任务会将CPU使用权占为己有。1.系统初始化及任务概念·从存储上讲,一个任务包括任务控制块(记录任务的各个属性),任务堆栈(保存任务的工作环境)和任务程序代码(执行函数)。任务状态包括:睡眠(没有任务控制块),就绪(有任务控制块但没有CPU控...

2018-10-11 12:23:19 531

原创 12-HAL库串口通信总结

1.定义了三种传输方式:阻塞传输,中断传输、DMA传输HAL_UART_Transmit;  HAL_UART_ReceiveHAL_UART_Transmit_IT;    HAL_UART_Receive_ITHAL_UART_Transmit_DMA;    HAL_UART_Receive_DMA此外还定义了两个中断回调函数,供中断和DMA使用,分别在数据传输一半和完成时使...

2018-10-09 18:31:18 6022 3

原创 UCOSIII系统移植到STM32F7中

1.准备好UCOSIII的源码,可从官网下载。2.在工程里创建文件夹UCOSIII等文件夹,并添加文件。3.在MDK中创建路径并添加文件。 4.修改相关文件a.bsp.c和bsp.h:这两个为系统外设的初始化文件,其实可以不用。b.os_cpu_a.asm汇编文件:函数类型  PUBLIC改为  EXPORTPUBLIC  OS_CPU_FP_Reg...

2018-09-29 18:49:30 2909 2

原创 关于 Error[Pe020]: identifier "HAL_StatusTypeDef" is undefined

这个bug比较常见,右键可以定位到相关头文件,但系统依旧报错,其实主要还是头文件的问题。1.需要检查头文件中关于主程序所用到的部分是否已经使能,尤其是 “stm32f7xx_hal_con.h”和"stm32f7xx_hal.h"。2.编译器报错的地方并不准确,比如报头文件 stm32f7xx_rcc.h 中HAL_StatusTypeDef未定义,需要仔细查看报错是在编译那个.C文件的时...

2018-09-20 20:59:56 9547 2

原创 11-STM32F746之存储总结

 1.基本概念存储器总的分为易失性存储器(掉电后存储内容丢失)和非易失性存储器两大类。前者存取速度快,而后者可以长期保存数据。易失性存储器:RAM,又分为动态随机存储器(DRAM)和静态随机存储器(SRAM)。当前个人计算机常用的内存条是DDRIII SDRAM。EEPROM:电可擦除存储器,用电路控制,可按字节为单位修改数据,现在主要使用的ROM芯片都是这一类。FLA...

2018-09-20 12:32:19 1315

原创 10-HAL库之ADC电压采集

 1.简介12位ADC是逐次趋近型模数转换器,有19个复用通道(可测量16个外部源,2个内部源和1个VBAT通道的信号)。A/D转换可在单次、连续、扫描或不连续采样模式下进行,采样结果存储在1个16位数据寄存器中(实际只有12位数据)。规则通道:一般所使用的通道;注入通道:在规则通道转换时强行插入转换的通道,类似于中断。ADC支持外部事件触发,包括内部定时器和外部IO。ADC输...

2018-09-19 09:50:47 11967 1

原创 9.STM32之两只看门狗

1.独立看门狗 IWDG由内部时钟LSI提供,故不需要时钟使能,为递减计数器。独立看门狗激活后,计数器递减到0时复位,因此需要在计数器减到0之前进行喂狗操作。步骤:取消写保护-设置时钟分频系数-设置重装载值-看门狗使能-喂狗程序相关函数:#include "stm32f4xx_iwdg.h"void IWDG_WriteAccessCmd(uint16_t IWDG_WriteAc...

2018-09-13 19:50:46 167

原创 8.STM32之EXIT外部中断

每个IO口都可以作为一个外部中断输入,但只有7条外部中断线。流程:1.时钟使能2.GPIO配置3.IO口和中断线的映射4.NVIC设置,使能5.中断服务函数的处理6.进入中断后即可清除中断标志位#include &lt;exti_con.h&gt;#include &lt;stm32f4xx_exti.h&gt;#include &lt;key.h&gt;#...

2018-09-12 18:55:18 1039

原创 7.STM32F407ZG串口通信配置流程

步骤:1.时钟使能:GPIO时钟使能,串口时钟使能。    RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);2.端口配置:GPIO引脚配置,复用模式。    GPIO_InitTypeDef GPIO_S...

2018-09-11 19:46:59 1803

原创 6.中断优先级分组NVIC

void NVIC_PriorityGroupConfig(uint32_t NVIC_PriorityGroup)void NVIC_Init(NVIC_InitTypeDef* NVIC_InitStruct) typedef struct NVIC_InitTypeDef{uint8_t NVIC_IRQChannel; //中断通道uint8_t NVIC_IRQCha...

2018-09-11 16:57:16 1077

原创 5.HAL库之时钟系统及定时器SYSTICK

1.系统时钟树:LSI:低速内部时钟(RC震荡器),32kHz,提供低功耗时钟,用于看门狗和自动唤醒单元。LSE:低速外部时钟,外接32.768kHz的石英晶体,可用于RTC。HSI:高速内部时钟16MHz,RC振荡器,精度不高,可用作系统时钟或PLL输入。HSE:高速外部时钟4~26MHz,外接石英/陶瓷谐振器或外部时钟源,可用作RTC或PLL或系统时钟。PLL:锁相环倍...

2018-09-11 12:58:42 6601

原创 4.STM32F407ZG按键输入

1.硬件图对应的按键分别为PA0,PE4,PE3,PE2。其中KEY_UP按下时,PA0为高电平,因此应设置下拉输入。K1~K3按下时,PE4~PE2为低电平,因此应设置上拉输入。2.按键扫描:首先,按键输入这一从高电平变为低电平的动作才能任为按键按下,并不只是检测到有按键输入就是按键按下。其次,这里需要考虑按键一直处于按下状态时的情况。最后,需要对按键按下进行防抖确认。3.针对按...

2018-09-10 21:34:00 3238

原创 3.STM32F4蜂鸣器

推挽输出,输出高蜂鸣器响,输出低电平蜂鸣器停. #include &lt;stm32f4xx.h&gt; void Delay(__IO uint32_t nCount){ while(nCount--);}void GPIO_Con(){ GPIO_InitTypeDef GPIO_Struct; RCC_AHB1PeriphClockCmd(RCC_AHB1Peri...

2018-09-09 16:38:04 1879

原创 2.STM32F4/7点灯

思路:1.时钟使能(开启GPIOA端口时钟使能) 2.GPIO配置(推挽输出模式,频率,速度等) 3.GPIO输出高电平(输出置位) STM32F4:推挽输出,输出低电平灯亮,输出高电平灯灭.#include &lt;stm32f4xx.h&gt; void Delay(__IO uint32_t nCount){ while(nCount--);}void GPI...

2018-09-08 11:23:14 706

原创 1.基于固件库建立STM32F4的工程模板

 1.新建一个文件夹,命名为工程的名字(例如:STM32_Demo),在此文件夹下建立5个文件夹,分别命名为。如下图:CORE,FWLIB,OBJ,SYSTEM,USER  2.在ST官网下载最新标准固件库(STM32F4xx_DSP_StdPeriph_Lib_V1.8.0)并解压:https://www.st.com/en/embedded-software/stm32...

2018-09-08 10:06:03 4956 3

LWIP-freertos.rar(STM32F7芯片,lwip实现热插拔)

带freertos操作系统的lwip移植模板,实现网线的热插拔,芯片为STM32F746,其中还包含自己的学习总结,移植改进和野火的官方教程。

2019-07-23

S25FL512SAGMFI011.rar

基于HAL库函数和STM32F746平台,S25FL512S存储芯片的简单驱动,包括说明书,基本引脚配置,读写操作等。

2019-05-28

LWIP_FREERTOS.rar

利用cubemx生成freertos+lwip,实现基本的数据回显功能,内含模板,代码以及步骤说明。

2019-05-13

C语言实现AES_ECB加密

基于C语言实现的AES_ECB模式加密,代码为.c和.h文件,方便移植,代码实现过程清晰明了,注释丰富。上传文件为VS2010工程文件,若没有安装VS2010,可将.c和.h文件复制到其他工程,添加后即可使用。

2019-03-11

基于HAL库DMA的485使用xmodem协议发送数据包

基于HAL库的485串口配置,收发均使用DMA,解放CPU。通过xmodem实现数据包的发送和接收,数据长度可自定义。

2018-12-06

485使用DMA完成不定长字节输入输出

基于HAL库的485通信测试,平台是STM32F746,利用DMA输入输出和空闲中断,实现数据的不定长字节输入输出。

2018-12-05

RN8302锐能微芯片驱动程序

锐能微RN8302电能采集芯片的驱动程序,通过SPI接口进行通信。

2018-11-08

基于HAL库的串口不定长数据输入

基于HAL库,芯片为STM32F746,利用DMA+空闲中断实现串口不定长数据的输入读取。

2018-10-17

基于STM32F746的ucosiii系统移植

基于STM32F746的ucosiii系统移植,模板库为正点原子风格。

2018-10-02

STM32F410函数库

STM32F410标准函数库,从www.st.com官网下载,涵盖关于STM32F410Rx芯片的所有函数。

2018-09-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除