STM32F429开发笔记
文章平均质量分 83
基于STM32F429的开发记录
郑烯烃快去学习
今天不想跑 所以才去跑
展开
-
初识CAN(Controller Area Network)协议
正常我们的设备中,将片上的外设与主机通讯,正常是是使用IIC、SPI、USART等通讯协议,而CAN称为控制器局域网络,这种总线是一种可以在无主机情况下实现微处理器或者设备之间相互通信的总线标准。...原创 2022-08-14 22:53:20 · 2619 阅读 · 0 评论 -
STM32F429入门(三):使用寄存器点亮LED
(一)打开原理图,找到led所在引脚,选用PH10。(二)选取寄存器,选用GPIO端口输出数据寄存器GPIO 端口输出数据寄存器 (GPIOx_ODR) (x = A..I)偏移地址:0x14还需要设置GPIO端口模式寄存器:GPIO 端口模式寄存器 (GPIOx_MODER) (x = A..I)偏移地址:0x00此GPIO端口模式寄存器是两位控制一个io口,找到控制PH10的端口,还要注意使用的方法,我们使用的是输出模式:(三)在stm32f4xx.h写入地址,.原创 2021-08-31 19:25:58 · 1121 阅读 · 0 评论 -
STM32F429入门(八):初识固件库
一、什么是固件库? 固化到EEPROM或者是芯片的FLASH中。 操作的是最底层的设备 按照我的理解就是,它就是一个封装好的函数库,跟前几次自己写库差不多。二、CMSIS标准及库层次关系因为基于 Cortex 系列芯片采用的内核都是相同的,区别主要为核外的片上外设的差异, 这些差异却导致软件在同内核,不同外设的芯片上移植困难。为了解决不同的芯片厂商生产的 Cortex 微控制器软件 的兼容性问题,ARM 与芯片厂商建立了 CMSIS 标准(Cortex MicroControll原创 2021-09-06 00:20:44 · 3415 阅读 · 0 评论 -
STM32F429入门(二)
开始学习嵌入式的第二天,发现昨天学习的东西有些遗漏,今天要做个补充????。那么就从寄存器那一块开始补学吧,昨天没有那么仔细地去学习这个知识。(一)学会看丝印: 如果有小圆点在芯片上,则从这个小圆点开始逆时针,就是引脚口从1到最大引脚口。 如果没有小圆点在芯片上,则正看芯片,引脚口1在左上角开始,再逆时针。 (二)芯片和外设之间通过各种总线连接,其中主控线(也就是内核控制的部分)有8条,被控总线有7条,主控总线通过一个总线矩阵来连接被控总线,总线矩阵用于主控总线之间的访问仲裁管原创 2021-08-31 00:53:51 · 1569 阅读 · 0 评论 -
STM32F429入门(七):学着自己写库
接着前天的内容,今天要试着写一下设置引脚为高电平的函数://函数功能:设置引脚为高电平,使用置位的寄存器//参数说明:GPIOx:该参数为GPIO_TypeDef类型的结构体指针,指向GPIO端口的地址// GPIO_Pin:表示某个端口的引脚号//Example:GPIO_SetBits(GPIOH,10)void GPIO_SetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin){ GPIOx->BSRRL = (1<<原创 2021-09-04 20:38:38 · 961 阅读 · 0 评论 -
STM32F429入门(五):了解GPIO
(一)GPIO--general purpose input output是通用输入输出端口的简称,简单来说就是软件可控制的引脚,STM32芯片的GPIO引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。型号为 STM32F4IGT6 型号的芯 片有 GPIOA、GPIOB、GPIOC 至 GPIOI 共 9 组 GPIO,芯片一共 176 个引脚,其中 GPIO 就占了一大部分,所有的 GPIO 引脚都有基本的输入输出功能。问题一:GPIO与引脚有什么区别? 引脚可以分为以原创 2021-09-01 18:28:54 · 1861 阅读 · 0 评论 -
STM32F429入门(六):构建库函数雏形
这次是尝试自己写库,用的是前几篇文章里配置好的编译环境:第一次是点亮PH10的LED灯,程序如下:#include <stm32f4xx.h>#define PERIPHER_BASE ((unsigned int)0x40000000)`#define AHB1PERIPH_BASE (PERIPHER_BASE+0x00020000)`#define GPIOH_BASE ...原创 2021-09-02 20:44:19 · 485 阅读 · 0 评论 -
STM32F429入门(四):新建工程--寄存器版
(一)新建一个文件夹,打开keil5--Project--New uVision project。给自己的工程起个名字:保存后,选择芯片型号:弹出来的框的意思是,询问你是否要用keil自带的库软件,我们是不需要使用的,直接关闭:之后回到刚刚新建的文件夹中,新建文档,作为你的编程文件,需要一个主函数文件,以及一个后缀为.h的存放寄存器映射文件:找到固件库STM32F4xx_DSP_StdPeriph_Lib_V1.8.0,找到Libraries,打开CMSIS,点击D...原创 2021-08-31 23:16:48 · 994 阅读 · 0 评论 -
STM32F429入门(十四):中断
异常就是中断,中断就是异常。中断类型:1.系统异常,体现在内核水平。F429 在内核水平上搭载了一个异常响应系统, 支持为数众多的系统异常和外部中断。 其中系统异常有 10 个,外部中断有 91 个。除了个别异常的优先级被定死外,其它异常的 优先级都是可编程的。很多人会疑问说为什么起始地址是从0x0000 0000开始的,而不是从FLash 0x8000000,这是由寄存器的重映射引起的,可以理解为他们是从0x8000000开始定义为起始地址,他们的地址也可以看做是偏移量,这个偏移量也是可以原创 2021-09-16 13:07:24 · 1817 阅读 · 0 评论 -
汇编原来是这样(一)
汇编原来是这样(一)(一)基础知识一、机器语言 机器语言是机器指令的集合。 机器指令展开来讲就是一台机器可以正确执行的命令。(只有0和1) 比如堆栈指令:0101 0000(PUSH AX) 二、汇编语言的产生以及组成 汇编语言的主体是汇编指令。 汇编指令与机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书写格式。 汇编指令是机器指令的助记符。 例如:机器指令:1000100111011000操作:寄存器BX内容送原创 2021-12-09 18:57:53 · 1175 阅读 · 0 评论 -
STM32F429入门(二十二):SPI-FatFs文件系统
使用文件系统可以更好地管理FLASH的存储空间。小型存储器如EEPROM可以直接存储,但是对于FLASH、SD卡等这些大容量的设备时,就需要文件系统来管理。一、初识文件系统当需要记录字符时,可以把这些文字转换成ASCII码,存储在数据中,然后调用SPI_FLASH_BufferWrite函数,把数组内容写入到SPI FLASH芯片的指定地址上,在需要的时候从该地址把数据读取出来,再对读出来的数据以ASCII码的格式进行解读。缺陷: 难以记录有效数据的位置 难以确定存储介质的剩余空原创 2021-10-13 17:55:57 · 4109 阅读 · 0 评论 -
STM32F429入门(十五):EXTI
EXTI:External interrupt/event controller 外部中断/事件控制器。外部中断/事件控制器(EXTI)管理了控制器的 23 个中断/事件线。每个中断/事件线都对 应有一个边沿检测器,可以实现输入信号的上升沿检测和下降沿的检测。EXTI 可以实现对 每个中断/事件线进行单独配置,可以单独配置为中断或者事件,以及触发事件的属性。“23”表示在控制器内部类似的信号线路有23个,也就是说EXTI总共有23个中断/事件。而它如何使用呢?通过SYSCFG_EXTICR.原创 2021-09-16 19:10:53 · 1564 阅读 · 0 评论 -
STM32F429入门(十八):DMA
DMA(Direct Memory Access,直接存储区访问)为实现数据高速在外设寄存器与存储器之 间或者存储器与存储器之间传输提供了高效的方法。它不占CPU,可以节省很多资源。有时候当我们需要在两个存储器之间传输数据时,我们需要通过CPU,从A传送到B,也就是说它可以减少CPU的负担。 DMA1:P->M,M->P DMA2:P->M,M->P,M->M (P为外设,M为存储器) 存储区到外设传输就是把特定存储区内容转移至外设的数据寄存器中,这种多原创 2021-09-30 11:58:42 · 3022 阅读 · 1 评论 -
STM32F429入门(二十一):SPI协议及SPI读写FLASH
IIC主要用于通讯速率一般的场合,而SPI一般用于较高速的场合。一、SPI协议简介SPI 协议是由摩托罗拉公司提出的通讯协议(Serial Peripheral Interface),即串行外围设 备接口,是一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间, 要求通讯速率较高的场合。(一)物理层SPI 通讯使用 3 条总线及片选线,3 条总线分别为 SCK、MOSI、MISO,片选线为SS,它们的作用介绍如下: SS:从设备选择信号线,常称为片选信.原创 2021-10-07 22:54:48 · 14036 阅读 · 0 评论 -
STM32F429入门(十六):SySTick
一、认识SysTick系统定时器为内核中的一个外设。24位,只能递减,存在于内核嵌套在NVIC中,所有的Cortex-M内核的单片机都具有这个定时器。我们要使用这个定时器,可以使用以下的寄存器:翻译过来也就是如下的寄存器:系统定时器 是一个 24bit 的向下递减的计数器,计数器每计数一次的时间为 1/SYSCLK,一般我们设置 系统时钟 SYSCLK 等于 180M。当重装载数值寄存器的值递减到 0 的时候,系统定时器就 产生一次中断,以此循环往复。流程图如下:控制及状态...原创 2021-09-22 20:45:59 · 797 阅读 · 0 评论 -
STM32F429入门(十):使用固件库点亮LED以及按键检测
在上一篇学习如何配置固件库后,我想试着写出一个让led灯闪烁的效果,最后成功啦,其实也只不过是学会了调用库函数,程序如下:int main(void){ RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOH, ENABLE); LED_GPIO_Config(); while(1) { GPIO_ResetBits(GPIOH,LED_R_GPIO_PIN); GPIO_SetBits(GPIOH,LED_E_GP原创 2021-09-09 21:29:12 · 1241 阅读 · 0 评论 -
STM32F429入门(二十):IIC通讯协议(硬件)
一、I2C协议I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的,由于它引脚少,硬件 实现简单,可扩展性强,不需要 USART、CAN 等通讯协议的外部收发设备,现在被广泛地使用在系统内多个集成电路(IC)间的通讯。(一)I2C物理层的特点:电阻一般选择4.7k。它的物理层有如下特点:(1) 它是一个支持多设备的总线。“总线”指多个设备共用的信号线。在一个 I2C 通讯总 线中,可连接多个 I2C 通讯设备,支持多个通讯主机及多个通.原创 2021-10-06 00:16:16 · 5311 阅读 · 0 评论 -
STM32F429入门(十一):位带操作
什么是位带操作?首先联系熟悉的51单片机,还记得之前很熟悉的点亮led灯的操作:sbit LED = P0^0;LED = 0; P0 = 0xFE; //一个io口控制8个口,这种操作叫做总线操作P0^0 = 0; //设置单个io口,这种叫做位操作//stm32单片机GPIOH_ODR &= ~(1<<10); //总线操作//stm32没有与51相同的sbit这类写法,不可以通过sbit选中一个端口而去操作它位操作就是可以单独的...原创 2021-09-12 17:34:44 · 1297 阅读 · 0 评论 -
LTDC-DMA2D液晶显示原理(一)
一、了解显示器常见的显示器有CRT显示器、液晶显示器、LED点阵显示器及OLED显示器。(1)液晶显示器LCD(Liquid Crystal Display)LCD 显示器具有功耗低、体积小、承载的信息量大及不伤眼的优点,因而它成为了现在的主流电子显示设备,其中包括电视、电脑显示器、手机屏幕及各种嵌入式设备的显示器。液晶是一种介于固体和液体之间的特殊物质,它是一种有机化合物,常态下呈液态, 但是它的分子排列却和固体晶体一样非常规则,因此取名液晶。如果给液晶施加电场,会改变它的分子排列,从而改原创 2022-02-02 17:40:43 · 2131 阅读 · 0 评论 -
STM32F429入门(十九):ROM RAM SRAM FLASH
存储器是计算机结构的重要组成部分。存储器是用来存储程序代码和数据的部件,有 了存储器计算机才具有记忆功能。一、存储器的种类存储器按其存储介质特性主要分为“易失性存储器”和“非易失性存储器”两大类。 其中的“易失/非易失”是指存储器断电后,它存储的数据内容是否会丢失的特性。由于一 般易失性存储器存取速度快,而非易失性存储器可长期保存数据,它们都在计算机中占据着重要角色。在计算机中易失性存储器最典型的代表是内存,非易失性存储器的代表则是硬盘。易失性存储器可以理解为是我们电脑的内存条(一般都是DR原创 2021-09-30 16:15:29 · 2587 阅读 · 0 评论 -
STM32F429入门(十七):USART/UART
一、理解通信在计算机设备与设备之间或集成电路之间常常需要进行数据传输,所以需要通讯。(一)串行通讯与并行通讯按数据传送的方式,通讯可分为串行通讯与并行通讯,串行通讯是指设备之间通过少量数据信号线(一般是 8 根以下),地线以及控制信号线,按数据位形式一位一位地传输数据的通讯方式。并行通讯一般是指使用 8、16、32 及 64 根或更多的数据线进行传输的通讯方式,并行通讯就像多个车道的公路,可以同时传输多个数据位的数据。很明显,因为一次可传输多个数据位的数据 ,在数据传输速率相同的情况..原创 2021-09-23 21:56:11 · 2282 阅读 · 0 评论 -
STM32F429入门(九):使用固件库新建工程
一、首先新建一个文件夹二、新建文件夹:Project、Libraries、User、Doc,之后就打开keil 5,在project的目录里新建工程,之后在Libraries中添加固件库里的两个文件,分别是:之后再删除我们不需要的文件:比如Release_Notes.html,还有CMSIS中除了Device和Include的:在 \Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates中只保留如下选中,其余都删除:在User..原创 2021-09-09 14:07:17 · 1291 阅读 · 1 评论 -
FMC——扩展外部SDRAM
STM32控制器芯片内部有一定大小的SRAM及FLASH作为内存和程序存储空间,但当程序较大,内存和程序空间不足时,就需要在STM32芯片的外部扩展存储器了。市场上SDRAM的价格普遍比SRAM性价比要高一些,所以正常电脑扩展的内存,那些内存条都是由SDRAM集成的。给STM32芯片扩展内存与给PC扩展内存的原理是一样的,只是PC上一般以内存条的形式扩展,内存条实质是由多个内存颗粒(即SDRAM芯片)组成的通用标准模块,而STM32直接与SDRAM芯片连接。一、SDRAM控制原理下面以型号I原创 2022-02-01 21:46:57 · 2121 阅读 · 1 评论 -
STM32F429入门(十三):RCC时钟树
RCC:reset clock control 复位和时钟控制器。我们用的比较多的是时钟控制器。一、RCC的主要作用是时钟部分设置系统时钟 SYSCLK、设置 AHB 分频因子(决定 HCLK 等于多少)、设置 APB2 分 频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各 个外设的分频因子;控制 AHB、APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。打开汇编文件,找到此语句=SystemInit->void S原创 2021-09-16 00:49:28 · 1947 阅读 · 0 评论 -
STM32F429入门(十二):了解启动文件
启动文件是使用汇编语言所编写的,是系统上电复位后所执行的第一个文件:启动文件的作用有什么呢? 初始化堆栈指针SP 初始化PC指针,指向复位程序 初始化中断向量表 配置系统时钟 调用C库函数_main,最终进入C语言编程。 由于启动文件采用的是汇编语言,所以我们现在可以来入门一下汇编的知识,在汇编文件中,我们注释采用的是“;”。而我们的启动文件为startup_stm32f429_439xx.s,那么下面我们将对它进行分析并且对它进行了解吧。首先,原创 2021-09-14 01:47:14 · 1205 阅读 · 1 评论 -
LTDC-DMA2D液晶显示 代码详解(二)
使用以下结构体的具体原理需要参考LTDC-DMA2D液晶显示(一)一、LTDC初始化结构体typedef struct{ uint32_t LTDC_HSPolarity; //配置行同步信号HSYNC的极性 uint32_t LTDC_VSPolarity; //配置垂直同步信号VSYNC的极性 uint32_t LTDC_DEPolarity; //配置数据使能信号DE的极性原创 2022-02-03 21:34:18 · 2144 阅读 · 0 评论 -
使用电容触摸屏做一个画板--原理(一)
一、什么是触摸屏触摸屏又称触控面板,它是一种把触摸位置转化成坐标数据的输入设备,根据触摸屏的检测原理,主要分为电阻式触摸屏和电容式触摸屏。 电阻式触摸屏:造价便宜,能适应较恶劣的环境,但它只支持单点触控(一次只能检测面板上的一个触摸位置),触摸时需要一定的压力,使用久了容易造成表面磨损,影响寿命。 电容式触摸屏:具有支持多点触控、检测精度高的特点,电容屏通过与导电物体产生的电容效应来检测触摸动作,只能感应导电物体的触摸,湿度较大或屏幕表面有水珠时会影响电容屏的检测效果。 区分电阻屏与原创 2022-02-09 16:08:47 · 2895 阅读 · 0 评论 -
LTDC-DMA2D显示屏显示-编码标准(三)
一、字符编码由于计算机只能识别0和1,文字也只能以0和1的形式在计算机里存储,所以我们需要对文字进行编码才能让计算机处理,编码的过程就是规定特定的01数字串来表示特定的文字,最简单的字符编码例子是ASCII码。 ASCII码(0~255) 在程序设计中使用ASCII编码表约定了一些控制字符、英文及数字。它们在存储器中,本质也是二进制数,只是我们约定这些二进制数可以表示某些特殊意义。 ASCII码分为两部分: 第一部分是控制字符或通讯专用字符(编码0~31) 它们并没有特定的原创 2022-02-09 13:45:56 · 1449 阅读 · 1 评论 -
使用电容触摸屏做画板——软件IIC(二)
使用电容触摸屏时发现硬件IIC会使电容触摸屏卡死,经过调试发现软件IIC更加好用,那么下面就了解一下软件IIC叭。IIC协议: 通讯的起始和停止信号 有效数据 响应信号 具体参考博客:STM32F429入门(二十):IIC通讯协议(硬件)_Alkaid2000的博客-CSDN博客_stm32 硬件iic 对于SCL与SDA两条线,我们可以使用gpio输出的方式进行控制: (1)模拟起始信号:SCL为高电平、SDA由..原创 2022-02-10 22:55:11 · 5197 阅读 · 0 评论 -
使用电容屏做一个小画板——应用层(三)
在上一节中,中断里存放了检测按下的xy轴的数据,里面有两个处理的函数:/*** @brief Touch_Button_Down 按键被按下时调用的函数,由触摸屏调用* @param x 触摸位置的x坐标* @param y 触摸位置的y坐标* @retval 无*/void Touch_Button_Down(uint16_t x,uint16_t y){ uint8_t i; for(i=0;i<BUTTON_NUM;i++) { /* 触摸到了...原创 2022-02-11 00:11:08 · 1491 阅读 · 1 评论 -
STM32F429IGT6入门(一)
终于比完了赛也收拾完了学校一切的事务,终于有时间来学习自己喜欢的东西了!!(搓手手)最开始我准备用开发板学习,我使用的开发板是STM32F429挑战者V2和V1,所以我迫不及待地下载了keil 5 和装上了pack包,然后就遇到了小问题:由于这个问题会导致我下不进程序,会使我出现以下的错误:Error: Flash Download failed - Target DLL has been cancelledSWD/JTAG Communication Failure....终于花了原创 2021-08-30 00:35:33 · 3787 阅读 · 0 评论