自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 STM32F407--库函数-- stm32f4xx_tim.c

关于定时器配置的一些常见的函数从 stm32f4xx_tim.h 文件进行分析:stm32f4xx_tim.c 一共是3365行stm32f4xx_tim.h 一共是1150行1 typedef struct {2 uint16_t TIM_Prescaler; // 预分频器3 uint16_t TIM_CounterMode; // 计数模式4 uint32_t TIM_Period; // 定时器周期5 uint16_t TIM_ClockDivision;

2020-11-26 21:16:12

原创 STM32F407--通用定时器

通用定时器通用定时器溢出中断通用定时器 反转输出定时器配置文件// TIM4_ch1_PD12 定时器4_通道1// 映射 在引脚 PD12 上面void Tim4_ch1_PD12_AF(){ GPIO_InitTypeDef GPIO_InitStructure; //基本引脚结构体 RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE); //引脚时钟结构体初始化 GPIO_InitSt

2020-11-26 20:25:05 6

原创 STM32F407--通用定时器反转输出配置

目前,各个平台都没有反转输出的配置!!!准备搞起来!!!必须的!!

2020-11-26 17:02:16 3

原创 STM32F407--定时器输出PWM

主函数int main(void){ u16 led0pwmval=0; u8 dir=1; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 uart_init(115200);//初始化串口波特率为115200 TIM14_PWM_Init(500-1,84-1); //84M/84=1Mhz的计数频率,重装载值500,所以PWM频率为 1M/50

2020-11-26 16:18:12 8

原创 STM32F407--通用定时器溢出中断实验

主函数:int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2 delay_init(168); //初始化延时函数 LED_Init(); //初始化LED端口 TIM3_Int_Init(5000-1,8400-1); //定时器时钟84M,分频系数8400,所以84M/8400=10Khz的计数频率,计数5000次为500ms while(1) { LED0=

2020-11-26 16:15:44 37

原创 STM32F407--时钟管理

第16章 RCC—使用 HSE/HSI 配置时钟本章参考资料:《STM32F4xx 中文参考手册》 RCC 章节。学习本章时,配合《STM32F4xx 中文参考手册》 RCC 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。RCC : reset clock control 复位和时钟控制器。本章我们主要讲解时钟部分,特别是要着重理解时钟树,理解了时钟树, F407 的一切时钟的来龙去脉都会了如指掌。16.1 RCC 主要作用—时钟部分设置系统时钟 SYSCLK、设置 AHB 分频因

2020-11-23 18:46:53 10

原创 STM32F407--寄存器映射

什么是寄存器在学习 STM32 编程时,通常有两种编程方式,一种是寄存器编程,另外一种是固件库编程,其中寄存器编程是基础,而固件库编程是在寄存器编程的基础上升级而来的一种易于学习和开发的编程方式,是我们学习 STM32 编程的时候需要重点掌握的一种编程方法。固件库编程对于项目开发固然简单和快速,但是从学习的角度开发,学习寄存器编程的方法我们也不能丢。其实,我们在学习 8 位或者 16 位单片机的时候,居多都是采用寄存器编程,那么这个寄存器编程里面的寄存器是什么东西?它在芯片的什么地方?在探索 S

2020-11-23 18:44:50 13

原创 STM32--debug调试

编译一下工程。然后点击:(开始/停止仿真按钮),开始仿真(如果开发板的代码没被更新过,则会先更新代码(即下载代码),再仿真,你也可以通过按 ,只下载代码,而不进入仿真。特别注意:开发板上的 B0和 B1 都要设置到 GND,否则代码下载后不会自动运行的!),如图 4.2.5 所示:因为我们之前勾选了 Run to main()选项,所以,程序直接就运行到了 main 函数的入口处。另外,此时 MDK 多出了一个工具条, 这就是 Debug 工具条,这个工具条在我们仿真的时候是非常有用的,下面简

2020-11-23 14:58:07 19

原创 STM32--固件库

1.固件库的官方下载2.固件库的结构core_cm4.h 文件是 CMSIS 核心文件,提供进入 M4 内核接口,这是 ARM 公司提供,对所有CM4 内核的芯片都一样。你永远都不需要修改这个文件,所以这里我们就点到为止。system_stm32f4xx.h 是片上外设接入层系统头文件。主要是申明设置系统及总线时钟相关的函数。与其对应的源文件 system_stm32f4xx.c 这个里面有一个非常重要的 SystemInit()函数申明,这个函数在我们系统启动的时候都会调用,用来设置系统的整个系统

2020-11-23 14:45:21

原创 STM32 -- NVIC中断优先级管理

STM32F40xx/STM32F41xx 的 92 个中断里面, 包括 10 个内核中断和 82 个可屏蔽中断,具有 16 级可编程的中断优先级, 而我们常用的就是这 82 个可屏蔽中断。在 MDK 内,与 NVIC相关的寄存器, MDK 为其定义了如下的结构体:typedef struct{__IO uint32_t ISER[8]; /*!< Interrupt Set Enable Register */uint32_t RESERVED0[24];__IO uint32_

2020-11-23 14:03:38 8 1

原创 STM32--外部中断

关于中断: STM32F4支持22个外部中断, 每个io都可以进行外部中断。EXTI(中断)线 0~15 。 对应的是外部的IO设备, 每个io口都可以进行中断,那么。。。不够用啊??人家是这样设计的:GPIOx0~GPIOx15 对应 exti 0~15.这样!!! 使用库函数配置外部中断的步骤: 1. 使能 IO口时钟,初始化 IO 口为输入 2. 开启 SYSCFG 时钟,设置 IO 口与中断线的映射关系。 RCC_APB2PeriphClockCmd(RCC

2020-11-20 14:01:43 18

原创 指针专题三

C和C++中经常会用到指针函数和函数指针和数据项一样,函数也是有地址的,函数的地址是存储其机器语言代码的内存的开始地址。指针函数和函数指针经常会混淆,一个是返回指针的函数,另一个是指向函数的指针,下面就分别解释指针函数和函数指针的区别。...

2020-11-18 10:19:10 4

原创 C++ 类和对象

C++ 类和对象1.封装2.对象的初始化和清理3.C++对象模型和this指针4.友元5.运算符重载6.继承7.多态1.封装2.对象的初始化和清理3.C++对象模型和this指针4.友元5.运算符重载6.继承7.多态

2020-11-12 21:01:43 21

原创 STM32--串口

void USART1_Configuration(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); //使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1

2020-11-12 14:51:56 13

原创 STM32--框架结构

关于STM32时钟系统的学习。首先了解一下STM32的结构和时钟总线。/*******************************/////时钟树/*****************************/在分析时钟树的时候,需要结合代码进行分析。具体的关于时钟的代码在:"system_stm32f4xx.c"中。其中有这样的一段描述: Supported STM32F40xxx devices *--------------------------

2020-11-09 18:27:07 13

原创 通信协议--转串口工具

1.COM口com口,好像是串口的一种,关注串口是因为我的串口发现是直连的那种,通过这个玩意 连接的时候,2.UART口3.USB口

2020-11-09 18:26:01 1

原创 STM32--高级定时器

typedef struct{ uint16_t TIM_OCMode; /*!< Specifies the TIM mode. This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ uint16_t TIM_OutputState; /*!< Specifies the TIM Output Com.

2020-11-09 18:22:07 8

原创 通信协议--IIC

I2C 总线协议在硬件上, I2C 总线是由时钟总线 SCL 和数据总线 SDA 两条线构成, 其中 SCL 为时钟线, SDA 为数据线, 如图 6-1 所示。 总线上可以同时连接多个器件, 所有器件的 SCL 都连到一起, 所有 SDA 都连到一起。6-1 I2C 总线时序图起始信号: I2C 通信的起始信号的定义是 SCL 为高电平期间, SDA 由高电平变化到低电平产生的一个下降沿, 表示一次通信过程的开始, 如图 6-2 中的 Start 部分所示。数据传输: I2C 通信是高位在

2020-11-09 18:20:54 6

原创 通信协议--SPI

SPI(Serial Peripheral Interface)是一种高速的、 全双工、 同步通信总线, 常用于MCU和EEPROM、 FLASH、 实时时钟、 数字信号处理器、步进电机驱动芯片等器件的通信。由于其简单实用, 数据传输速率较高, 被广泛应用于外设控制领域。标准的 SPI 接口一般使用 4 条线:串行时钟线( SCK)、主机输入/从机输出数据线( MISO)、主机输出/从机输入数据线( MOSI)、从机选择线( CS,也被称作 SSEL 或 NSS)。SPI 总线允许一对一或一对

2020-11-09 18:19:08 16

原创 2020-11-09

为什么要去写csdn,主要是你要有产出,不能以工作一天了,然后什么收获也没有,就是那种浪费时间的那个样子。觉得已经过了那个年纪了,应该是有点产出的,一天,通过WORD文档先进行记录,之后通过CSDN 进行编辑,到了周么,进行文档的整理梳理。这样自己的只是体系就会比较完备哦。...

2020-11-09 18:09:56 7

原创 嵌入式软件工程师常用的软件

1.语言类1.1C语言开发学习环境1.2C++语言开发学习环境2.单片机类2.1STC51单片机2.2STM32单片机3.Linux学习3.1 vmware3.2 finashell3.3 CRT4.QT 学习5.其他软件5.1视频播放器 potplarer5.2 笔记神器 onenote for win105.3 思维导图 visio5.4办公软件5.51.KEIL52.vs20173.NOTPAND4.ad5.potplarer6.onenote fo

2020-10-25 18:58:20 20

原创 STM32F407_高级定时器_TIM1_TIM8

这里写目录标题0. 声明1.定时器时钟树2.定时器中结构体分析2.1TIM时基初始化结构定义2.2TIM输出比较初始化结构定义2.3TIM输入捕获初始化结构定义2.4BDTR结构定义3.定时器溢出中断4.定时器PWM输出分析5.定时器比较输出分析0. 声明需要先学习的基础内容: 1.请在时钟树的基础上进行定时器的学习,不然会知其然不知其所以然。 2.GPIO配置基础 3.NVIC中断优先级配置基础 4.串口通信基础(可有可无,主要用于查看调试信息) 5.可以先进行基本定时器和通用定时器的

2020-09-24 16:08:03 85

原创 STM32--感悟

今天的感悟,从来不觉得做事情,是容易的。因为事情本来就不应该是简单的,,一件事情,自己需要付出心血和艰辛的努力。不是简简单单就能狗获得的要学会长久的努力钻研一件事情,并且自己可以坚持的坐下去,并且做好。我想 我应该是可以安静的精通一下单片机的,毕竟自己目前所在的公司,我是想好好的干下去。就这样。希望自己可以安静一点。我是于工作之中,又开始使用STM32,回头重新学习。今天看见别人的代码是 黑色的看着很酷,,,嘿嘿。。。查一下,,,...

2020-09-21 19:04:41 9

原创 指针专题二

指针专题二1.字符指针与字符串2.指针数组3.多级指针4.void指针与const修饰符

2020-08-04 11:03:32 21

原创 指针专题一

指针专题_华清远见_小美老师指针专题一指针的基本用法指针的运算指针与数组指针与二维数组指针专题二字符指针与字符串指针数组多级指针void指针与const修饰符指针专题一指针的基本用法掌握指针的基本用法,我学习了很久的指针了,还是不理解,可以想一下为啥还是不理解,陈旭。自己并没有那种非常的专注的去学习。c程序设计使用指针可以:使程序简洁、紧凑、高效有效的表达复杂的数据结构动态的分配内存得到多于一个的函数返回值地址和变量:在计算机内存中,每一个字节单元,都有一个编号,称为地址。最小的单位是

2020-08-03 18:35:41 20

原创 C标准库--stdarg.h

C 标准库 - <stdarg.h>简介stdarg.h 头文件定义了一个变量类型 va_list 和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数.可变参数的函数通在参数列表的末尾是使用省略号(,…)定义的。库变量下面是头文件 stdarg.h 中定义的变量类型:1 va_list这是一个适用于 va_start()、va_arg() 和 va_end() 这三个宏存储信息的类型。库宏下面是头文件 stdarg.h 中定义的宏:1 void v

2020-07-20 21:36:20 23

原创 工作代码

#define gdbtag() printf("%s , %s, %d\n", __FILE__, __func__, __LINE__)工作中遇到的一句代码,现在理解以下,** FILE **** func **** LINE **其中__FILE__ 是显示当前在哪个文件中的,比如main.c public.c 等,func 是表明在哪个函数里面的。__LINE__是表明输出信息的时候哪一行。这个函数还是比较好理解的,全部的信息都包含在 C语言的头文件 <s

2020-07-20 11:21:45 52

原创 C基础12--文件操作

strstr()定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。定义说的有点羞涩难懂。举个例子就知道了。比如:char str2 = “cdef”;char str1 = “abcdefgh”;则通过函数,将返回strstr(str1,str2) = cdefgh;如果str1不包含有str2。char str2 = “cxef”;char str1 = “abcdefg

2020-07-20 09:36:28 24

原创 C文件读写

第一次的工作项目就是C语言的一个文件读写。难度也是挺好理解的。。。不过对于关键的概念 比如 流 是个什么东西,脑子里 并没有一个清楚的概念。流是指输入输出这个过程。 因为数据从设备读入内存和数据从内存写入磁盘的过程很像是数据在流动一样,所以就“形象” 地把这个过程称为“流”。流有专很多种类的:比如字符串流、文件流等等。在C++里面, 流是一个对象,属这个对象管理数据输入输出的细节。 相应的类 叫做流类。如果流是输入输出的过程,那字符串流就是字符串在文件里输入输出的过程?但是文件流怎么理解,在文件

2020-07-20 09:35:55 23

原创 工作

今天进行一段代码的分析从天嵌I.MX6Q (安装的是Linux16.04 的系统)一个文件夹中获取已经放置好的配置文件。如下图的配置文件。使用配置文件是为了方便在不同的地方也使用这一套代码吧。需要做的是把 参数名后面的数据摘出来。文件操作:首先想到的是是什么?FILE fp strstr strncpy 等等,,,这个一直想整理出来吧 但是自己一直都没有做。菜鸟教程对这个整理的还是比较清晰的。我自己还是最好过一遍吧,一个坑。最下面是整体的代码,先弄一片代码的样子:这个少不了,这个是

2020-07-20 09:26:51 25

原创 天嵌i.mx6q--2

2020-07-18 22:15:49 25

原创 天嵌i.mx6q--1
原力计划

天嵌开发板 是我第一份工作使用的一款开发板。他需要连接一根网线,一根232串口线,当然说的是废话,那个嵌入式开发板不是这样子搞得,二哈想想韦东山可以的啊, 现在就已经用了 USB 口,作为串口通过串口线进入系统,嵌的i.mx6q :用户名: rooot密码:embedsky进入之后进行ip 地址的查看,为的是通过网线,进行finals hell 连到远程可以看到这里的IP地址是:192.168.1.156其实这个地址并不是一开始的地址,很多的时候,地址一般是自动获取的,因此,我一开始的

2020-07-14 22:16:40 50

原创 韦东山

PC:BIOS引导操作系统挂载windows识别C\D盘运行程序;QQ 微信之类嵌入式系统:bootloader引导Linux内核挂载根文件系统运行应用程序boot loader 最主要的目的是:启动内核 boot loader 有很多种,u-boot是其中的一种,u-boot 源码包u-boot 补丁u-boot 打补丁 编译 烧写体验。u-boot 是为了支持很多种芯片,很多种单板,比如说常见的Windows系统有 XP win7 win10 这些系统他们都是运行在BIOS

2020-07-14 16:58:56 65

原创 修养感悟

我是在 2020年7月11号 ,开始需要自己写一个关于串口编程的程序结果两天了 ,都没有搞定。我只能说是我自己太水了,水的我都不想说话。。其实自己天天晚上看电视的时间很长,很长。那么我为啥不用这个看视频的时间用来学习呢???其实:高考有时候很能反应一种问题,他能反映出一个人的真实的素质。而这种素质(克服自己的缺点的能力,是需要很好的培养的。比如,一种学习能力,和学习习惯,这个他们早就养成了比较优秀的学习习惯和学习能力,当然一直跟下去的就是自己的一种综合素质的提升,而我已经颓废了七年了,并且自己经常熬夜

2020-07-13 22:41:45 79

原创 韦东山2440_第一期学习笔记_009_arm_linux_gcc和makefile
原力计划

1.arm_linucx_gcc2.makefile001_Makefile的引入使用keil, mdk, avr等工具开发程序时点点鼠标就可以编译了,它的内部机制是什么?它怎么组织管理程序?怎么决定编译哪一个文件?(其实内部也是makefile类似的编译,不过在桌面上集成度更好,开发更加的简单。在Linux和ARM中运行资源没有Windows那么好,所以采用这种方式。)首先列举一个比较简单的例子。编写主函数a.c 1 #include <stdio.h> 2 int m

2020-07-10 22:29:51 42

原创 Linux操作文件夹文件

Linux C下:操作文件夹和操作文件有些类似,操作文件之前学习的是FIFO这个下面读取文件夹要用到结构体struct dirent,在头#include <dirent.h>中,如下:#include <dirent.h>struct dirent{ long d_ino; /* inode number 索引节点号 */ off_t d_off; /* offset to this dirent 在目录文件中的偏移 */ unsigne

2020-07-06 17:33:50 258

原创 韦东山-2440-学习路径

一下是转的韦东山老师的学习路径。

2020-07-06 11:50:38 28

原创 C标准库-- stdlib.h

C 库函数 - snprintf()C 标准库 - <stdio.h> C 标准库 - <stdio.h>描述C 库函数 int snprintf(char *str, size_t size, const char *format, …) 设将可变参数(…)按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。声明下面是 snprintf() 函数的声明。int snprintf ( char *

2020-07-01 16:51:38 27

原创 C标准库--stdio.h

C 库函数 - snprintf()描述C 库函数 int snprintf(char *str, size_t size, const char *format, …) 设将可变参数(…)按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。声明下面是 snprintf() 函数的声明。int snprintf ( char * str, size_t size, const char * format, … );参数s

2020-06-30 10:21:34 26

原创 Linux1--IO

io 一共分为3讲。标准ioLinux 下io库文件制作以及使用

2020-06-29 11:18:52 25

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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