自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (9)
  • 收藏
  • 关注

原创 STM32F407探索者(正点原子的资料)(百度链接)

STM32F407探索者(正点原子的资料):链接:https://pan.baidu.com/s/1FiYX4mOB_iIxlJL3FI_Q1Q提取码:dpnq

2019-11-05 10:33:54 8997 5

原创 STM8、32标准外设库(百度链接下载)

STM8、32标准外设库STM32F0xx_StdPeriph_Lib_V1.5.0.zipSTM32F10x_StdPeriph_Lib_V3.5.0.zipSTM32F2xx_StdPeriph_Lib_V1.1.0.zipSTM32F30x_DSP_StdPeriph_Lib_V1.2.3.zipSTM32F37x_DSP_StdPeriph_Lib_V1.0.0.zip...

2019-11-05 09:59:59 2676 5

原创 Keil如何新建STM32工程

Keil下如何新建STM32工程,分六步走。第一步 新建文件夹第二步 拷贝必要文件进来拷贝完成。第三步 新建工程打开软件新建工程:Project àNew uVision project然后弹出路径和工程名设置,选择刚才新建的工程路径,并命名,然后保存。接着选择自己使用的芯片型号,点击????。/**************...

2019-11-05 09:43:00 1159

原创 STM32工程在keil下怎么移植到IAR环境(stm32f103c8)

从STM32的keil开发环境移植到IAR开发环境,分为六步走。首先安装IAR编译环境,这个自行安装。第一步 新建文件夹新建一个文件夹命名“LED_CTRL”,在这个文件夹下再建立三个文件夹,CMSISI:放系统启动相关文件,FWLIB:放库文件USER.:放用户自己写的文件如下图:第二步 拷贝文件在keil下其实也有相对应的文件,我么们考过来就可以了。...

2019-11-04 17:44:38 2138

原创 STM32串口重定向使用printf的问题

之前使用串口重定向的时候没想那么多,也没有归纳总结,都是能用就行。今天重新弄一个串口,在使用串口重定向printf打印时,遇到了程序不执行的问题。现归纳总结一下:芯片:STM32F103C8t6 环境:KEIL5.231.写出串口重定向的函数:(注意:需要包含都文件 #include <stdio.h>)#define _PRINTF_#ifdef _PRIN...

2019-10-31 10:25:54 998 2

原创 关于PADS9.5打开layout时出现错误窗口:unable to create addin :InstanceName=Achive Navigator=DAVIGATOR的问题。

1.问题描述:9.5PADS打开layout出现如下窗口:2.解决办法:以管理员身份打开CMD,注意,必须是以管理员身份哦!然后进入安装PADS的目录:C:\Windows\system32>D:D:\MentorGraphics\9.5PADS\SDD_HOME\Programs>然后执行命令安装:D:\MentorGraphics\9.5PADS\...

2019-10-09 10:55:22 3174

原创 DSP ECan在配置扩展模式,非常奇怪的问题

DSP ECan在配置扩展模式,基本的发送接收功能时遇到一个非常奇怪的问题,2块不同的板子,但芯片是相同的F8069,其中有一块板子只有下载完程序而不复位就能发送和接收数据,只要复位之后,就不能再跑起来。另外一块板子则不受影响,开机,复位都能在正常发送接收数据。可以确认的是,程序已经成功写入到芯片,那还有什么原因会导致这样的情况发生呢?...

2019-08-21 09:29:38 297

原创 安装DSP开发环境:CCS8注意事项

安装CCS8的注意问题:1.安装的路径直接使用默认路径,否则可能会安装失败。(我就是一直安装失败才使用默认路径的。)2.安装controlSUITE也直接使用默认路径,(原因:在CCS8开发软件中需要配置controlSUITE的路径,否则库文件将会不被找到,文件编译则能通过,而很多工程都是直接使用默认路径,因此使用默认路径比较好。)...

2019-08-08 08:19:15 1256

转载 C 命令行参数

C 命令行参数执行程序时,可以从命令行传值给 C 程序。这些值被称为命令行参数,它们对程序很重要,特别是当您想从外部控制程序,而不是在代码内对这些值进行硬编码时,就显得尤为重要了。命令行参数是使用 main() 函数参数来处理的,其中,argc 是指传入参数的个数,argv[] 是一个指针数组,指向传递给程序的每个参数。下面是一个简单的实例,检查命令行是否有提供参数,并根据参数执行相应的动...

2019-01-06 18:23:59 210 3

转载 C 内存管理

C 内存管理本章将讲解 C 中的动态内存管理。C 语言为内存的分配和管理提供了几个函数。这些函数可以在 &lt;stdlib.h&gt; 头文件中找到。序号 函数和描述 1 void *calloc(int num, int size); 在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节都初始化为 0。所以它的结果是分配了 num*size ...

2019-01-06 18:15:42 261 2

转载 C 可变参数

C 可变参数有时,您可能会碰到这样的情况,您希望函数带有可变数量的参数,而不是预定义数量的参数。C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。int func(int, ... ) { . . . } int main() { func(2, 2, 3); func(3, 2, 3, 4); }请注意,函...

2019-01-06 18:07:14 119

转载 C 递归

C 递归递归指的是在函数的定义中使用函数自身的方法。举个例子:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?'从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?……'"语法格式如下:void recursion() {statements;...

2019-01-06 17:57:00 149

转载 C 预处理器

C 预处理器C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:...

2019-01-06 17:02:34 147

转载 C 文件读写

上一章我们讲解了 C 语言处理的标准输入和输出设备。本章我们将介绍 C 程序员如何创建、打开、关闭文本文件或二进制文件。一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。本章将讲解文件管理的重要调用。打开文件您可以使用 fopen( ) 函数来创建一个新的文件或者打开一个已有的文件,这个调...

2019-01-06 16:44:50 226

转载 位域

C 位域如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下:struct{ unsigned int widthValidated; unsigned int heightValidated;} status;这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,我们只存储 0 或 1。在这种情况下,C 语言提供了一种更好的利用内存空间的方式。如...

2019-01-06 16:16:28 164

转载 共用体

C 共用体共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。定义共用体为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:union [union tag...

2019-01-06 15:52:30 236

转载 结构体和位域

C 结构体C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性:Title Author Subject Book ID定义结构为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的...

2019-01-06 15:38:48 258

转载 函数指针与回调函数

函数指针函数指针是指向函数的指针变量。通常我们说的指针变量是指向一个整型、字符型或数组等变量,而函数指针是指向函数。函数指针可以像一般函数一样,用于调用函数、传递参数。函数指针变量的声明:typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型实例以下实例声明了函数指针变量 p,指向函数 max:实例#...

2019-01-06 14:36:57 397 1

转载 C语言之指针

什么是指针?指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:type *var-name;如:int *ip; /* 一个整型的指针 */double *dp; /* 一个 double 型的指针 */float *fp; /* 一个浮点型的指针 */...

2019-01-06 14:36:17 202

转载 C语言枚举的好处

枚举的好处:枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。枚举语法定义格式为:enum 枚举名 {枚举元素1,枚举元素2,……};接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:#define MON 1#define TUE 2#define WED 3#define THU 4...

2019-01-06 14:35:40 2867

原创 NRF51822的dfu工程编译问题

使用的版本:nRF5_SDK_12.3.0_666331ad编译环境:KEIL5工程路径:nRF5_SDK_12.3.0_666331ad\nRF5_SDK_12.3.0_d7731ad\examples\dfu\bootloader_secure\pca10028\arm5_no_packs\secure_dfu_secure_dfu_ble_s130_pca10028.uvproj...

2018-08-22 16:11:06 428

原创 stm32f429IGt6+7寸RGB屏+SRAM,使用标准库(不要HAL库)在ucosiii上如何移植emwin?

stm32f429IGt6+7寸RGB屏+SRAM,使用标准库(不要HAL库)在ucosiii上如何移植emwin?

2018-03-13 20:21:37 1582

原创 使用高级定时器,定时器1遇到的问题

初始化定时器1,开启定时器1中断,定时1S切换LED的状态。但是写好之后,测试发现灯的状态在44s才切换一次,一直找不到原因。最后发现了一点是高级定时器和普通定时器的区别:TIM_RepetitionCounte是用来配置重复计数,就是重复溢出多少次才给你来一个溢出中断,只有高级定时器需要配置。下面是定时器1的程序:#include "Timer1.h"#include

2017-08-30 18:17:51 1929

原创 stm32开机时,在eeprom读取存储的内容,发送给DGUS屏进行显示数据,但是第一个数据显示是0

stm32开机时,在eeprom读取存储的内容,然后用串口发送给DGUS屏的变量地址进行显示数据,但是第一个数据显示是0,而且之前发送接收数据时串口通信都不存在问题。通过测试eeprom读数据是成功的,但是为什么DGUS屏显示的第一个数据会失败呢?第一点,有可能是变量地址写错了,第二点,有可能是串口传输的问题,第三点,有可能是dgus屏接收显示数据太慢。经过咨询DGUS屏的客服,客

2017-08-16 21:22:21 1783

原创 dgus屏串口通信时,发现数据有时候stm32能接收到,有时候接收不到,一直想不到是什么原因

在dgus屏上输入数据,发送给STM32,然后stm32接收到数据之后,显示到电脑上,但是,不看不知道,一看吓一跳,竟然会经常数据丢失!!!!找了一个下午也没找到什么原因,一直认为是串口中断函数出错了,可是看了n遍,也没觉得那个函数有问题啊。晚上睡觉觉都在想到底是怎么回事........,今早上一来,把一些程序先注释掉之后,结果发现,没问题了,突然脑子一转,肯定是定时中断搞得鬼,一查发现,开了两个

2017-08-16 21:17:25 3424 3

原创 STM32的接收中断和发送中断同时使能会导致程序死在初始化串口那里。

//主函数 串口与PC通信 收到什么就发什么extern char Uart2_Buffer[30];extern char Uart2_Rx; int main(void) { u16 times=0; u8 Uart2_Tx = 0; delay_init(); //延时函数初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2 uart_init(9600); //串口初始化为9

2017-08-11 00:30:35 4292 3

转载 今天开始学PID电机控制,这个作者写得很不错,和大家分享一下~~~ PID控制算法通俗理解 作者:whut_wj 来源:http://blog.eccn.com/space.php?uid=35

今天开始学PID电机控制,这个作者写得很不错,和大家分享一下~~~PID控制算法通俗理解作者:whut_wj来源:http://blog.eccn.com/space.php?uid=353091&do=blog&id=3964本文以通俗的理解,以小车纵向控制举例说明PID的一些理解。(一)首先,为什么要做PID?由于外界原因,小车的实际速度

2017-06-03 11:39:57 1580

原创 c语言中的绝对值

加入嵌入式这个行业已经半年了,以前一直以为c语言中没有绝对值这个东西的,今天看了一份代码才发现,原来是自己孤陋寡闻了........头文件:math.h函数名:abs();例如:abs(-1);其返回结果是1。具体看下图。

2017-06-03 09:57:04 12295

TM1650_datasheet.pdf

特性描述 TM1650 是一种带键盘扫描接口的 LED(发光二极管显示器)驱动控制专用电路。内部集成有 MCU 输入输出控制数字接口、数据锁存器、LED 驱动、键盘扫描、辉度调节等电路。TM1650 性能稳定、质 量可靠、抗干扰能力强,可适用于 24 小时长期连续工作的应用场合。 功能特点  两种显示模式:8段×4位和7段×4位  段驱动电流大于25mA,位驱动电流大于150mA  提供8级亮度控制  键盘扫描:7×4bit内部集成三极管驱动  高速两线式串行接口  内置时钟振荡电路  内置上电复位电路  支持2.8V-5.5V电源电压  提供DIP16及SOP16封装 适用领域:  家用电器产品如机顶盒、空调、DVD/VCD等显示的驱动。

2020-01-08

LED_Demo(Keil).rar

这是博客里写的KEIL下新建stm32工程的demo程序,有需要的可以自己下载或者联系我要也行。

2019-11-05

Keil如何新建STM32工程.docx

Keil下如何新建STM32工程,分六步走。 第一步 新建文件夹 第二步 拷贝必要文件进来 拷贝完成。 第三步 新建工程 打开软件 新建工程:Project New uVision project 然后弹出路径和工程名设置,选择刚才新建的工程路径,并命名,然后保存。 接着选择自己使用的芯片型号,点击

2019-11-05

KEIL和IAR工程代码.rar

这里的文件是我打包上来的代码,keil环境+IAR环境下的STM32工程都有。

2019-11-04

KEIL+IAR工程代码.rar

这里的文件是我打包上来的代码,keil环境+IAR环境下的STM32工程都有。

2019-11-04

STM32工程在keil下怎么移植到IAR环境(stm32f103c8).docx

从STM32的keil开发环境移植到IAR开发环境,分为六步走。 首先安装IAR编译环境,这个自行安装。 第一步 新建文件夹 新建一个文件夹命名“LED_CTRL”,在这个文件夹下再建立三个文件夹, CMSISI:放系统启动相关文件 ,FWLIB:放库文件 USER.:放用户自己写的文件 如下图: 第二步 拷贝文件 在keil下其实也有相对应的文件,我么们考过来就可以了。 下图是keil工程下的文件: 下面我们开始拷贝: 1. 拷贝CMSIS文件 2. 拷贝FWLIB文件 3. 拷贝USER文件 4. 拷贝剩余的其他用户自己写的程序(其实这些文件放哪都可以,根据自己的习惯吧) 拷贝完成如下图: 第三步 新建工程 打开软件 新建工程 点击OK 命名led_temp保存到LED_CTRL下 然后就会得到下面的界面。 第四步 添加分组及文件 开始往工程中添加文件 1. 新建分组:add group 好了,分组完成。 2.添加文件 a.往CMSIS添加文件:system_stm32f10x.c、startup_stm32f10x_md.s CMSIS->add->add files 路径如下: b.往FWLIB添加文件:"stm32f10x_gpio.c" "stm32f10x_rcc.c" "stm32f10x_spi.c" "stm32f10x_usart.c",(这里是因为工程中使用到了一部分的外围,所以需要自己根据工程需求添加) c.往USER中添加: "stm32f10x_it.c" "main.c",另外还有其他的用户自己写的文件led.c、nrf24l01.c、uart.c 。 到此,文件添加完成。 第五步 配置工程 同样选中“led_temp”然后右键,选择Options.就会出现配置界面,如下图 。 a. 选择工程使用的芯片型号,stm32f103c8t6,这里自己根据自己设置哦。 b.Library Configuration的Library要设置为Full,这样才能使用printf(); b. 进入C/C++Compiler,添加文件路径和所需的宏定义。 到此路径添加完成,下面添加宏定义。 不记得的,可以打开芯片的头文件查找即可。 到此,宏定义添加完成。 c. 进入Linker配置链接文件,点击进入,在IAR环境中已经存在,你选择和自己芯片匹配的就好了。 d. 进入Debugger配置,选择自己程序的下载方式。 选择下载到flash 到此,工程配置完成。 第六步 编译工程 同样选中”led_temp”右键-》Rebuild all 弹出文件名设置 同样设置为“led_temp”点击保存。 第六步 解决编译错误问题 弹出好多的错误: 解决办法: 1.core_cm3.h重命名为core_cm3.h.old 再次编译: 出现错误: 解决办法:继续进入工程配置,General Options->Library Configuration:Library 选FULL,右下角选择Use CMSIS 我们会看到,错误已经没有了,但是有很多的警告,如下图 解决办法:startup_stm32f10x_md.s文件中的”SECTION .text:CODE:REORDER”都要改为“SECTION .text:CODE: NOROOT:REORDER” 方法很简单,用Notepad++打开然进行替换即可。 首先,要去掉文件的只读模式,然后在修改。 好了,全部修改完成。保存,并恢复为只读模式,然后再编译工程。 工程编译结果无错误,无警告,移植到此结束,完美。 。

2019-11-04

STM32F429IGT6驱动RGB屏测试程序

基于STM32F429IGT6驱动RGB屏的测试程序,可以更改为横屏和竖屏,可以识别多种RGB屏,实现不断扫屏测试。

2017-12-13

DGUS应用指南

DGUS应用指南v5.7

2017-08-25

空空如也

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

TA关注的人

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