stm32

Can the STM32H743's FMC drive a 16-bit 8080 bus faster than 1.6MHz when clocked at 480MHz?

孤街浪徒 提交于 2020-03-05 00:33:11
问题 I'm using the FMC of the STM32H743 to drive a 16-bit 8080-bus LCD controller. I've tried using DMA, MDMA and a CPU-loop to transfer data to the 8080-bus, via the FMC. The transfer frequency does not depend on whether DMA, MDMA or CPU-loop is used. This make me think that the DMA/MDMA/CPU-loop is not the limiting factor. At a 480MHz FMC clock, the transfer happens at just 1.6MHz, giving me only 20fps on a 16-bit colour 320x240 LCD. At a 240MHz FMC clock, the transfer happens at just 0.8MHz,

stm32学习

大城市里の小女人 提交于 2020-03-04 20:06:06
1. GPIO: 原文链接:https://blog.csdn.net/qq_29350001/article/details/80681244 应用场合: ①上拉输入、下拉输入可以用来检测外部信号;例如,按键等; ②浮空输入模式,由于输入阻抗较大,一般把这种模式用于标准通信协议的I2C、USART的接收端; ③普通推挽输出模式一般应用在输出电平为0和3.3V的场合。而普通开漏输出模式一般应用在电平不匹配的场合,如需要输出5V的高电平,就需要在外部一个上拉电阻,电源为5V,把GPIO设置为开漏模式,当输出高阻态时,由上拉电阻和电源向外输出5V电平。 ④对于相应的复用模式(复用输出来源片上外设),则是根据GPIO的复用功能来选择,如GPIO的引脚用作串口的输出(USART/SPI/CAN),则使用复用推挽输出模式。如果用在I2C、SMBUS这些需要线与功能的复用场合,就使用复用开漏模式。 ⑤在使用任何一种开漏模式时,都需要接上拉电阻。 APB2>APB1: APB2负责 AD,I/O,高级TIM,串口1。 APB1负责 DA,USB,SPI,I2C,CAN,串口2345,普通TIM,PWR 来源: CSDN 作者: arkfz 链接: https://blog.csdn.net/arkfz/article/details/104654949

STM32-通用定时器

走远了吗. 提交于 2020-03-04 17:57:07
12.1Stm32f4xx定时器的介绍 12.1.1STM32F407定时器的介绍 一共有14个定时器 1.基本定时器(2个):定时 2.通用定时器(10个):具有基本定时器的功能,还有输入捕获和输出比较(PWM)。 3.高级定时器(2个):具有通用定时器的功能,拥有互补输出(死区插入)功能。 12.1.2PWM的介绍 PWM是什么: 具有一定频率的脉冲宽度,就是一个高低电平。 占空比:高电平占整个周期的比例。 PWM的应用: 七彩灯,直流电机,快充等 窗帘实验:当窗帘被全部打开,整个窗户都被遮住,此时室内的光线最弱;当窗帘被慢慢拉起来,室内的光线慢慢变亮,整个窗帘都被收起来的时候,室内光线最强。这就是一种脉冲宽度调节。 12.2通用定时器的特征 ● 16 位自动重载递增计数器(属于中等容量器件) ● 16 位可编程预分频器,用于对计数器时钟频率进行分频(即运行时修改),分频系数 介于 1 和 65536 之间 ● 多达 2 个独立通道,可用于: — 输入捕获 — 输出比较 — PWM 生成(边沿对齐模式) — 单脉冲模式输出 ● 使用外部信号控制定时器且可实现多个定时器互连的同步电路 ● 发生如下事件时生成中断: — 更新:计数器上溢、计数器初始化(通过软件或内部触发) — 触发事件(计数器启动、停止、初始化或者由内部触发计数) — 输入捕获 — 输出比较 来源: 51CTO

STM32获取DHT11温度传感器数据

心不动则不痛 提交于 2020-03-03 16:03:30
准备物件 STM32F103C8T6核心板 ST-LINK V2 DHT11 杜邦线若干 连接线 STM32F103C8T6芯片管脚图 管脚说明 连接仿真器 STM32 ST-LINKV2 VCC VCC GND GND SWCLK SWCLK SWDIO SWDIO 创建工程 参考 STM32F103X 开发环境搭建 可将其模板复制一份 添加延时功能 在 DRIVER/inc 中添加 timer.h #ifndef __TIMER_H__ #define __TIMER_H__ #include "stm32f10x.h" void systick_init(void); void timing_delay_decrement(void); void delay_us(__IO uint32_t n); #endif 对应的在 DRIVER/src 中添加 timer.c #include "timer.h" __IO uint32_t gTimingDelay; /* SystemCoreClock / 1000 --> 1ms */ /* SystemCoreClock / 10000 --> 100us */ /* SystemCoreClock / 100000 --> 10us */ /* SystemCoreClock / 1000000 --> 1us */

STM32单片机 关于超声波模块的学习(1)

不问归期 提交于 2020-03-03 14:16:32
分享一篇我刚刚弄完的一个超声波模块的学习 超声波模块的介绍: 1.单片机的一个IO口发送高电平的信号给Trig,信号时间要大于10us 2.然后模块的内部会发送方波 3.然后Echo会给单片机的IO口发送高电平,这个高电平持续的时间是超声波模块从碰到物体再返回的时间 模块的连接问题 我使用的是CH340G模块与电脑进行通信 编程思路: 1、先需要去配置定时器(基本定时器也可以,我用的是TIM2),还有串口的配置,还有延时函数的配置(推荐大家使用systick定时器)因为比较精准 2、基本的配置好了下面就要去写程序了 先随便定义两个IO口,连接Trig的IO口配置要推挽输出,连接Echo的IO口要浮空输入。 3、我看好多大神写的程序都是给Trig一个超过10us的高电平的时候进行了位操作和51很像,是定义在了sys.h这个头文件里。其实这个位操作在keil5中我没有看到有sys.h这个头文件,其实没有咱们也可以用STM32中的库函数去代替 4、给Trig发送高电平可以直接用GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);函数 5、检测Echo传给IO口的高电平时使用 uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);函数

关于 STM32 UART4 的一些小问题

只谈情不闲聊 提交于 2020-03-02 16:46:33
不知为什么,STM32的中、小容量启动文件中没有发现UART4,UART5的中断处理函数,也就是在HD以下的版本中是没有UART4、UART5中断的喽?但查了下,中等容量的STM32F103RCT6是有UART4、UART5的,并且支持部份中断,以下摘自库函数( @version V3.5.0)说明: /** * @brief Enables or disables the specified USART interrupts. * @param USARTx: Select the USART or the UART peripheral. * This parameter can be one of the following values: * USART1, USART2, USART3, UART4 or UART5. * @param USART_IT: specifies the USART interrupt sources to be enabled or disabled. * This parameter can be one of the following values: * @arg USART_IT_CTS: CTS change interrupt (not available for UART4 and UART5) * @arg USART_IT

STM32对HAL库的外部中断处理

谁说胖子不能爱 提交于 2020-02-29 06:27:47
这次外部中断是通过检测外部中断实现按键控制LED的开关。 每一个IO口都可作为外部中断口,将你要外部中断的IO口在CUBEMX中进行设置。 中断线能够自动识别,不用手动去改动。其他基本设置好之后,即完成了外部中断的初始化。此时要进入中断函数,印象中大家的外部中断函数应该是这个, 但是在HAL库文件中有此函数的描述, 即它会执行一个外部中断的回调函数。 在库文件中还找到了——weak 该回调函数的定义,weak其实意思就是定义了一个初始化的函数,你不改也可以,你改了,就按照你改的函数来执行。 所以我们需要在main文件中重构一个回调函数,把它当做是中断函数来用就好了。 即完成外部中断的写法。 之前说的串口中断调用的回调函数,应该也是一个道理一个原理,在此说明一下。。 来源: https://www.cnblogs.com/zjx123/p/11866018.html

STM32 FSMC使用之外扩RAM的妙用

匆匆过客 提交于 2020-02-29 04:33:37
在 STM32 上跑UCOS_II和UCGUI时,要想让屏幕稳定不闪,显示效果多样化,而且分配给每个任务的堆栈空间足够, STM32 内部的 RAM 肯定是不足的。最好的方法就是配置 FSMC 使内部 RAM 作为堆栈使用,而外部 RAM 作为变量存储和UCOS_II的任务堆栈。现在介绍 FSMC 以及如何配置,并写出启动文件中需要修改的地方。 来源: oschina 链接: https://my.oschina.net/u/2963604/blog/1810295

marlin2.0应用到STM32实践(续)

99封情书 提交于 2020-02-28 18:47:36
前言 在上篇内容中主要介绍了marlin2.0安装到已有开发板的实例。这篇内容将通过marlin2.0安装到BLACK_STM32F407VE开发板的实践介绍如何为新定制的开发板烧入固件并详细介绍前期的处理过程,希望能为那些想深入固件研究苦于不会编译安装和想绘制3D打印机开发板又不知如何烧录固件的marlin爱好者一些帮助。 BLACK_STM32F407VE开发板的硬件开源资料链接: https://github.com/mcauser/BLACK_F407VE 构建过程 类似于上篇文章的内容,首先将配置内容修改为适合于BLACK_STM32F407VE的开发板。 将 platformio.ini 文件中的 [plarformio] 下的 default_envs 修改为 default_envs = STM32F407VE_black 将 configuration.h 文件中的 MOTHERBOARD 修改为: #ifndef MOTHERBOARD #define MOTHERBOARD BOARD_BLACK_STM32F407VE #endif 将 configuration.h 文件中的串口1 SERIAL_PORT 修改为 -1 或 1 # define SERIAL_PORT -1 //USB虚拟串口 SERIAL_PORT 定义为 -1

嵌入式stm32 复习(工作用)---精确延时(初始化部分) 原理知识 2020.2.27

无人久伴 提交于 2020-02-27 19:06:43
引言 继续来更新嵌入式这个系列,再说一遍,这个系列我一般都会使用寄存器来编写,具体原因: 一、相比于库函数来说寄存器比较难编写,得具体根据芯片手册来编写。 二、能够通过寄存器的形式来让大家更加的清楚每一行代码为什么要写成这个值,具体是怎样编写的。 原理部分: 1.stm32有三种定时器:通用定时器(TIMx)、基本定时器(TIM6和TIM7)、高级控制定时器(TIM1和TIM8),其中我们一般用到的是通用定时器(TIMx)。 2. 其中需要掌握的知识点: 16位向上、向下、向上/向下自动装载计数器(一般我们是向上计数的)。 更新:计数器向上溢出/向下溢出,计数器初始化(通过软件或者内部/外部触发)。相当于是当计数达到量程的最大值时,此刻状态为溢出,同时触发溢出中断。 3 .这个知识点是定时器的重点,需要大家特别注意。 预分频器 :相当于精度(周期) 自动装载值 :相当于量程 4.时基单元:计数器寄存器、预分频器寄存器、自动装载寄存器。 5.更新中断一般是在中断使能寄存器(TIMX_DIER) 当UIE为1时,当计数器寄存器发生溢出时,才会触发更新事件。 6.在更新事件发生的时候,TIM2的更新中断事件指向MCU的哪一个部分是由NVIC机制来管理的。 7. 8.编写的优先级越小,所代表的优先级越高。 来源: CSDN 作者: 致敬!!! 链接: https://blog.csdn