推荐阅读最新更新时间:2024-03-16 16:05
【STM32】FSMC 应用
【时间计算】 由公式:DATAST HCLK = tWRLW , DATAST= 15/13.8 ns = 1.08 ,取 1 。 再由公式((ADDSET + 1) + (DATAST + 1)) HCLK = max(tCYC, tCYC(READ)) ,即((ADDSET + 1) + (DATAST + 1)) HCLK = 66 ,算出 ADDSET = 66/13.8 - 3 = 1.7,这取 2 。 最后 得出 Address setup time: 0x1 Address hold time: 0x0 Data setup time: 0x2 。不知道这个设置是否有问题。
[单片机]
STM32的ADC多路采集 DMA传输 数据错位
解决方法:不要采用连续转换模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; 需要时才实施转换 ADC_SoftwareStartConvCmd(ADC1, ENABLE); 转换后取消转换 ADC_SoftwareStartConvCmd(ADC1, DISABLE); 经过测试能够解决stm32 adc dma多通道采样 数据错位. DMA为循环模式更改为非循环模式,将开启DMA传输和开启ADC规则转换这两句话单独拿出。 每一次DMA传输都在特定条件下,由我们自己开启。在每一次DMA传输完成进入中断之前 都将AD转换器和DMA传输关闭,切换通道完成之
[单片机]
关于stm32的USB学习笔记之usbcore.c
view plaincopyprint? #include stm32f10x_lib.h #include usbreg.h #include usbcore.h #include usbuser.h #include usbcfg.h #include usb.h #include usb_hw.h #include usbdesc.h #include hid.h #include hiduser.h #define _DEBUG_ #include debug.h #pragma diag_suppress 111,1441 //用来指示USB设备的状态
[单片机]
在STM32如何在我需要的时候关闭或打开外部中断EXTI
① EXTI- IMR &= ~(EXTI_Line1) 关闭了指定的外部 中断 ② EXTI- IMR |= EXTI_Line1 开启指定的外部中断
[单片机]
stm32的串口调试卡死问题
且看这次出现的bug是一直等待, while(USART_GetFlagStatus(USE_Usart,USART_FLAG_TC)==RESET); 这个有很多说法 不过本人处理的方法是加入了一个一行代码就好了 NVIC_SetVectorTable(NVIC_VectTab_FLASH,0);
[单片机]
stm32最小系统组成及作用
最小系统是单片机工作时的最低要求,不包含外设控制,原理比较简单,下面我们一起来看看stm32最小系统组成及作用。 stm32最小系统上电之后,能够让单片机正常运转以及下载程序,没有其他的功能。 stm32最小系统是由电源、复位、时钟、调试/下载接口、启动组成的。 电源 stm32单片机一般都是3.3V供电,电容起到滤波的作用。 复位 STM32复位引脚是低电平复位,正常工作状态,复位引脚是高电平。复位方式一共有三种,分别为上电复位、手动复位、程序自动复位。 时钟 晶振+起振电容 +(反馈电阻MΩ级) 能够让晶振两端的等效电容等于或接近于负载电容,可以起到一定的滤波作用,让晶振波形中的高频杂波消除。 调试/下
[单片机]
STM32的存储器映射详解
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。 Cortex-M3支持4GB的存储空间,它的存储系统采用统一编址的方式,程序存储器、数据存储器、寄存器被组织在4GB的线性地址空间内,以小端格式(little-endian)存放。由于Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000 0xFFFF_FFFF这一大块空间。见图1: 图1 Cortex-M3的存储器映射 Cortex-M3内
[单片机]
基于STM32开发板的UART收发空闲中断设计
有人在使用STM32的UART收发并开启空闲中断时,有时会发现空闲中断相比预期多进一次的情况。比方,本来以为只会进3次空闲中断的结果进了4次;或者说根本没开启接收,一使能空闲中断就立即进一次中断服务程序;有时即使在使能空闲中断之前还特意做了空闲事件标志的清零也会发生类似情况。 下面我找了块STM32开发板,选择USART1做自发自收的测试。也的确可以重现问题。 下面是我的测试代码的main程序: #define Length (25) uint8_t Data_RX ={0}; uint32_t UART_Rx_Len; //the Number of received data by DMA uint32_t UART_
[单片机]