FreeRTOS移植-基于STM32F407

首先新建或找一个基于Keil的STM32基础工程,这里我已经创建好了一个STM32F407VET6的工程模板,工程结构如下图的第1步的矩形框内所示。下面需要移植FreeRTOS了,将FreeRTOS的源码文件复制到工程文件夹中,一些用不到的文件可删除(哪些文件需要用到可参考上一篇的源码结构分析部分),然后在Keil中也创建一个FreeRTOS目录,将c文件添加进工程,注意port.c来自于RDVS
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

FreeRTOS例程1-基础任务创建

API函数任务创建xTaskCreate()函数原型(tasks.c中):BaseType_txTaskCreate(TaskFunction_tpxTaskCode,constchar*constpcName,constuint16_tusStackDepth,void*constpvParameters,UBaseType_tuxPriority,TaskHandle_t*constpxCre
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

FreeRTOS例程2-任务挂起恢复与使用中断遇到的坑!

任务挂起简单点理解就是现在不需要执行这个任务,让它先暂停,就是挂起。恢复就是从刚才挂起的状态下继续运行。API函数任务挂起vTaskSuspend()函数原型(tasks.c中):voidvTaskSuspend(TaskHandle_txTaskToSuspend)参数:xTaskToSuspend:需要挂起的任务句柄任务恢复vTaskResume()函数原型(tasks.c中):voidvTa
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

交通标识分类-TensorFlow实现

整理翻译自:https://github.com/waleedka/traffic-signs-tensorflow交通标识分类-tensorflow实现测试平台为win10系统,python3运行环境,需配置tensorflow-gpu。首先引入必要的库importosimportrandomimportskimage.dataimportskimage.transformimportmatpl
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

OpenCV-简易答题卡识别

参考自:https://www.pyimagesearch.com/2016/10/03/bubble-sheet-multiple-choice-scanner-and-test-grader-using-omr-python-and-opencv/一个简易的答题卡识别与分数判断小程序修改说明:1.不importimutils库,直接找mutils的源码,复制需要的函数的源码过来,分析算法原理2
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

TensorFlow-手写数字识别(一)

本篇文章通过TensorFlow搭建最基础的全连接网络,使用MNIST数据集实现基础的模型训练和测试。MNIST数据集MNIST数据集:包含7万张黑底白字手写数字图片,其中55000张为训练集,5000张为验证集,10000张为测试集。每张图片大小为28X28像素,图片中纯黑色像素值为0,纯白色像素值为1。数据集的标签是长度为10的一维数组,数组中每个元素索引号表示对应数字出现的概率。在将MNIS
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

TensorFlow-手写数字识别(二)

本篇文章在上篇TensorFlow-手写数字识别(一)的基础上进行改进,主要实现以下3点:断点续训测试真实图片制作TFRecords格式数据集断点续训上次的代码每次进行模型训练时,都会重新开始进行训练,之前的训练结果都被覆盖掉了,极不方便。在backwork.py中加入ckpt操作,可以实现断点续训功能。代码实现withtf.Session()assess:init_op=tf.global_va
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

TensorFlow-手写数字识别(三)

本篇文章在上篇TensorFlow-手写数字识别(二)的基础上,将全连接网络改为LeNet-5卷积神经网络,实现手写数字识别。1引言全连接网络:每个神经元与前后相邻层的每一个神经元都有连接关系,输入是特征,输出为预测的结果。参数个数:Σ(前层x后层+后层)如之前用于手写识别的3层全连接网络,输入层784个节点,隐藏层500个节点,输出层10个节点。则:隐藏层参数:748*500+500输出层参数:
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

TensorFlow-VGG16模型复现

1VGG介绍VGG全称是指牛津大学的OxfordVisualGeometryGroup,该小组在2014年的ImageNet挑战赛中,设计的VGG神经网络模型在定位和分类跟踪比赛中分别取得了第一名和第二名的成绩。VGG论文VERYDEEPCONVOLUTIONALNETWORKSFORLARGE-SCALEIMAGERECOGNITION论文指出其主要贡献在于:利用3*3小卷积核的网络结构对逐渐加
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

TensorFlow-平面曲线拟合

平面曲线属于非线性函数,至少需要3层的神经网络(输入层,隐藏层x1,输出层)来实现,为达到较好的效果,可尝试更多层,下面的例子使用了2层隐藏层,采用最基本的全连接形式,隐藏层的神经元个数没有严格要求,根据实际项目选择,下面例子选用8个。下面通过代码实现:引入相关库,定义神经网络层importtensorflowastfimportnumpyasnpimportmatplotlib.pyplotas
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

Linux gcc使用基础

gcc编译器是Linux下默认的C/C++编译器,大部分Linux发行版中都是默认安装的。gcc编译器通常以Linux命令的形式在终端(Shell/Bash)中使用。单一源文件最基础用法hello.c代码如下:#include<stdio.h>intmain(void){printf("HelloWorld!\n");}使用gcc编译:gcchello.c使用ls命令查看当前目录,多出
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

Linux gdb使用基础

GDB简介GDB(GNUDebugger)是Linux下一款C/C++程序调试工具,通过在命令行中执行相应的命令实现程序的调试,使用GDB时只需要在shell中输入gdb命令或gdbfilename(filename为可执行程序文件名)即可进入GDB调试环境。GDB主要有以下功能:设置断点单步调试查看变量的值动态改变程序的执行环境分析崩溃程序产生的core文件GDB常用命令调试示例1gdbtest
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

Linux makefile使用基础

makefile就像一个Bash脚本,其中也可以执行操作系统的命令。makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。1例子源码sin_value.c#include<stdio.h>#include<math.h>#definepi3.14159floatangle;voidsin_val
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

C语言打印数据的二进制格式-原理解析与编程实现

**问题引出**C语言中,在需要用到16进制数据的时候,可以通过printf函数的%x格式打印数据的16进制形式。在某些位标记、位操作的场合,需要用到2进制格式的数据,但printf函数不能输出2进制格式,虽然可以通过使用itoa或_itoa的方法转为2进制的字符串打印,但显示的长度是不固定的,无法显示有效数位前面的0。例如:现在需要打印数字258的2进制格式,且需要将32位全部显示出来,即想要得
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

C语言将float拆分为4个hex传输与重组

问题引出实际的编程应用中,特别是数据传输通信等场合,需要传输float等类型的数据,而常用的数据传输形式一般为hex格式或字符串格式,通常我们会选用hex格式,更接近计算机的2进制,而这种传输方式就需要将float转换为hex格式了。在计算机中,float占用4个字节,因此可以考虑将float拆分为4个hex格式的16进制数,完成数据传输后,接收方再将4个hex重组为float即可还原出原来的数据
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

C语言字符串相关函数使用示例 strtok_r strstr strtok atoi

通过一个实际小应用,记录C语言中4个字符串操作相关的函数及其用法:strtok_rsstrstrsstrtoksatoi问题引出先贴一段变量定义:charstr[]="led,100,0,80,15";//一个字符串,第一个逗号前的字符串设定为某个命令,后面的是参数假设某种应用场景,接收到一串字符串,如上面的str[]="led,100,0,80,15",以逗号为分割,假设该字
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

FreeRTOS例程3-串口中断接收不定长的数据与二值信号量的使用

1基础知识点1.1串口中断种类串口中断属于STM32本身的资源,不涉及到FreeRTOS,但可与FreeRTOS配合使用。串口接收中断中断标志为:USART_IT_RXNE,即rxnoneempty,串口只要接收到数据就触发中断,如果是接收一个字符串,则每接收到一个字符就触发一次中断。串口空闲中断中断标志为:USART_IT_IDLE,idle即空闲的意思,串口空闲时触发的中断,当然也不是说串口空
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

FreeRTOS例程4-串口DMA收发不定长数据

1基础知识点DMADMA(DirectMemoryAccess),即直接内存存储,在一些数据的传输中,如串口、SPI等,采用DMA方式,传输过程不需要CPU参与,可用让CPU有更多的时间处理其他的事情。STM32F4的DMA通道选择如下:接下来的程序思路如下:2编程要点2.1DMA发送2.1.1串口DMA发送配置由于是发送不定长的数据,先不需要配置发送的长度,在每次的发送时,再配置。//=====
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

从IIC实测波形入手,搞懂IIC通信

点击上方「码农爱学习」关注我们吧玩单片机的朋友都知道IIC通信这个工具,但好多人只是会用,内部的原理不求甚解,或是想要了解其原理,但却对抽象的时序描述一头雾水。本文将从实测的IIC波形入手,带你看到真实的IIC样子,进而去理解IIC的通信原理。1IIC基础知识首先复习一下IIC基础知识,这部分看不懂的请先带着疑问,然后我们通过分析IIC的真实波形,这些疑问可能就豁然开朗了~1.1IIC是什么IIC
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0

MPU6050姿态解算方式1-DMP

MPU6050的姿态解算方法有多种,包括硬件方式的DMP解算,软件方式的欧拉角与旋转矩阵解算,软件方式的轴角法与四元数解算。本篇先介绍最易操作的DMP方式。1MPU6050基本功能3轴陀螺仪陀螺仪,测量的是绕xyz轴转动的角速度,对角速度积分可以得到角度。3轴加速度计加速度计,测量的是xyz方向受到的加速度。在静止时,测量到的是重力加速度,因此当物体倾斜时,根据重力的分力可以粗略的计算角度。在运动
分类: 编程语言 发布时间: 02-28 22:19 阅读次数: 0
今日推荐