如何通过FSMC实现STM32与FPGA的同时相互读写数据? 50C

如何通过FSMC实现STM32与FPGA的同时相互读写数据?

1.问题背景:
本人设计的数据采集模块:STM32F407为主控芯片进行数据分析和处理,FPGA(EP2C8)负责外接ADC的控制和数据缓存。
STM32与FPGA之间设计的使用FSMC通信,本人已经实现单方面的数据传输:即FPGA将ADC采集的数据通过16位的数据总线传输给STM32里面。
但是,当我想在STM32接收数据的同时,向FPGA发送两次数据 以改变FPGA控制ADC的采样频率。这时候,出现问题。

2.出现的问题:
FPGA的SignalTap显示,数据总线没有出现我STM32发送的数据,反而是地址总线出现了数据,但地址总线从此开始自己加一地变化下去?

3.STM32的发送数据的程序代码

条件判断后,直接赋值给地址0x60000000。

if(freq == 3000)
         *(volatile int16_t *)0x60000000=0x0B;
if(freq == 800000000)
         *(volatile int16_t *)0x60000000=0x0C;

4.FPGA的接收数据的程序代码

其中** FSMC_XA **是FSMC的20位的地址总线。
_ FSMC_XD 是FSMC的16位的数据总线。_
AD_DIVCLK_REG1 和 AD_DIVCLK_REG2 是控制ADC采样的分频计数器_。
_

if (rising_edge(CLK)) then  

       if(AD_EN_WORK='0' and CS ='0' and WE = '0')then 

             case FSMC_XA(17 downto 11) is

                 when "1100000" =>AD_DIVCLK_REG1                                    <="0000000000110001";   

                 when "1100001" =>AD_SAMPLE_DEPTH_REG(11 downto 0)          <=FSMC_XD(11 downto 0);                                          

                 when "1100111" =>AD_DIVCLK_REG2                                    <="0000000000110001";   

                 when others     =>AD_DIVCLK_REG1<=AD_DIVCLK_REG1;

             end case; 

         end if;

            case FSMC_XD(15 downto 0) is

                 when "0000000000001011" =>AD_DIVCLK_REG1                                   <="0000000000000011";   

                 AD_DIVCLK_REG2                                 <="0000000000000011";       

                 when "0000000000001100" =>AD_DIVCLK_REG1                                   <="0000000000000001";   

                 AD_DIVCLK_REG2                                 <="0000000000000001";    

              when others    =>AD_DIVCLK_REG1<=AD_DIVCLK_REG1;

          end case;                       

    end if;    

5.SignalTap的监测图
图片说明

由SignalTap可以看出,
1. FSMC_XA作为地址总线,它出现了STM32的数据,但出现一次后就开始一直自加一了?我在STM32里面明明只赋值了两次?
2. FSMC_XD作为数据总线,一直是FPGA采集得到的ADC的数据,并成功发送给了STM32。但他为什么没有出现STM32里面,条件判断后所赋值的数:0x0B和0x0C呢?
3.FPGA里面的REG1明明初始值设了49(110001b),却显示为1,并且没变化。不应该先开始就是49,然后收到STM32的值后,就相对应地改变吗?
注:STM32程序的FSMC相关配置都配置好了,两个芯片的程序都没有报错,程序都正常下载到了芯片上。

                         希望大神能够抽时间解决一下,具体有细节问题还请随时问我。留言或者微信都行(微信:13438912526)。
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
STM32CUBEMX求助!!!关于F407ZGT6使用FSMC驱动LCD_ILI9481。

# 问题: **使用STM32CUBEMX配置FSMC驱动LCD_ILI9481,屏幕无法正常显示。** ### 以下是我对STM32CUBEMX的配置: #### 时钟: ![时钟](https://img-ask.csdn.net/upload/202004/24/1587723544_962994.jpg) #### FSMC: ![FSMC](https://img-ask.csdn.net/upload/202004/24/1587723710_256440.jpg) #### 配置完成全部之后屏幕会乱,现象如下: ![现象](https://img-ask.csdn.net/upload/202004/24/1587723285_579781.png) #尝试方法 我通过查看寄存器将及自己写的程序的FSMC和GPIO寄存器与官方的历程配置成完全一样也无法解决。 ##假如您有空,希望您能帮忙看看,万分感谢!!!

STM32F013用FSMC驱动SSD1289控制气的问题

尊敬的大侠们,菜鸟我刚买了个stm32f103的板子,用fsmc驱动时发现当你使用变化的数据流往寄存器写数据时(即显示图片时),他无法刷屏,直接是当前的刷屏背景,复位都没有用,但是你写入一种颜色数据确实正常的....代码附上,求大神帮忙 、、、、、、、、、、、、这是LCD.C中的、、、、、、、、、、、、、、、、、、、 #include "include.h" /* *函数名: void LCD_FSMCConfig(void) *描述: 初始化FSMC *输入参数: *返回值: *调用方法: 直接调用 */ void LCD_FSMCConfig(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef p; //设置地址建立时间 p.FSMC_AddressSetupTime = 5; //设置地址保持时间 p.FSMC_AddressHoldTime = 0; //设置数据建立时间 p.FSMC_DataSetupTime = 10; //总线返转时间 p.FSMC_BusTurnAroundDuration = 0; //时钟分频 p.FSMC_CLKDivision = 0; //数据保持时间 p.FSMC_DataLatency = 0; //FSMC选用模式 p.FSMC_AccessMode = FSMC_AccessMode_A; //选择设置的BANK以及片选信号(BANK1中的第一个block) FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1; //设置是否数据地址总线时分复用(No) FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; //设置存储器类型(NOR) FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR; //设置数据宽度(16bit) FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; //设置是否使用迸发访问模式(连续读写模式)(No) FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; //设置WAIT信号的有效电平(低电平有效) FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; //设置是否使用还回模式(No) FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; //设置WAIT信号有效时机(在wait状态之前) FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; //设置是否使能写操作(Yes) FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //设置是否使用WAIT信号(No) FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; //设置是否使用扩展模式(读写时序相互独立)(No) FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; //设置是否使用迸发写模式(No) FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; //设定读写时序 FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p; FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* Enable FSMC Bank1_SRAM Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE); } /* *函数名: void LCD_IOConfig(void) *描述: 初始化LCD的IO口 *输入参数: *返回值: *调用方法: 直接调用 */ void LCD_IOConfig(void) { GPIO_InitTypeDef GPIO_InitStructure; //打开FSMC时钟和GPIO口时钟 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_AFIO,ENABLE); /********************打开FSMC的数据端口D[15:0]****************************/ /*初始化GPIOD口,电路图从左至右*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14|GPIO_Pin_0|GPIO_Pin_9| GPIO_Pin_5|GPIO_Pin_15|GPIO_Pin_1|GPIO_Pin_8|GPIO_Pin_10 |GPIO_Pin_4; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOD , &GPIO_InitStructure); /*初始化GPIOE口,电路图从左至右*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_11| GPIO_Pin_13|GPIO_Pin_15|GPIO_Pin_8|GPIO_Pin_10|GPIO_Pin_12|GPIO_Pin_14; GPIO_Init(GPIOE , &GPIO_InitStructure); /* RS接PD11---A16*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_11; GPIO_Init(GPIOD , &GPIO_InitStructure); /*NE1------LCD_CS--->GPIOD-7*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7; GPIO_Init(GPIOD , &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOD, &GPIO_InitStructure); GPIO_ResetBits(GPIOD, GPIO_Pin_12);//取消LCD 的复位 } /* *函数名: void delay_ms(uint16_t ms) *描述: *输入参数: *返回值: *调用方法: */ void delay_ms(uint16_t ms) { uint16_t i,j; for( i = 0; i < ms; i++ ) { for( j = 0; j < 1141; j++ ); } } /* *函数名: __inline void LCD_WriteReg(uint16_t LCD_Reg,uint16_t LCD_RegValue) *描述: 写LCD寄存器(内联写寄存器,不重入压栈,加快速度) *输入参数: LCD寄存器地址和写入寄存器的值 *返回值: *调用方法: */ __inline void LCD_WriteReg(uint16_t LCD_Reg,uint16_t LCD_RegValue) { /* 写入寄存器16位地址然后写入寄存器的值 */ // Clr_Cs;RS=0; BANK1_LCD_REG=LCD_Reg; /* Write 16-bit Reg , RS=1*/ BANK1_LCD_RAM=LCD_RegValue; // Set_Cs; } /* *函数名: void LCD_SetCursor() *描述: 设置LCD数据写入的起始坐标0x4e--xpos,0x4f---ypos; *输入参数: LCD寄存器地址和写入寄存器的值 *返回值: *调用方法: */ void LCD_SetCursor(uint16_t Xpos , uint16_t Ypos) { LCD_WriteReg(0x004e , Xpos); LCD_WriteReg(0x004f , Ypos); } /* *函数名: LCD_GetPoint(xpos , ypos); *描述: 获取屏幕上一个点的颜色数据 *输入参数: 坐标参数 *返回值: 颜色数据 *调用方法: */ uint16_t LCD_GetPoint(uint16_t Xpos , uint16_t Ypos) { uint16_t RGBColor=0; LCD_SetCursor( Xpos , Ypos); BANK1_LCD_REG=0x22; RGBColor=BANK1_LCD_RAM; RGBColor=BANK1_LCD_RAM; return RGBColor; } /* *函数名: LCD_SetPoint(xpos , ypos); *描述: 在屏幕上打一个点 *输入参数: 坐标参数 *返回值: *调用方法: */ void LCD_SetPoint(uint16_t Color) { BANK1_LCD_RAM=Color; } /* *函数名: LCD_SetDispArea *描述: 设置显示区域 *输入参数: 起始终止坐标 *返回值: *调用方法: */ void LCD_SetDispArea(uint16_t Xspos , uint16_t Yspos , uint16_t Xepos , uint16_t Yepos) { LCD_WriteReg(0x44,Xspos+(Xepos<<8)); /*水平坐标起始(低八位)和终止(高八位)*/ LCD_WriteReg(0x45,Yspos); /*Yspos*/ LCD_WriteReg(0x46,Yepos); /*Yepos*/ } /* *函数名: LCD_ClearArea(uint16_t Xspos , uint16_t Yspos , uint_t Xepos ,uint_t Yepos,uint16_t Color) *描述: 清屏 *输入参数: *返回值: *调用方法: */ void LCD_Clear(uint16_t Color) { int i=0; LCD_SetDispArea(0, 0,239,320); LCD_SetCursor(0 , 0); BANK1_LCD_REG=0x22; for(i=0 ; i<240*320 ; i++) { LCD_SetPoint(Color); } } void DispImag(const unsigned char *Image , unsigned int Lenth) { int i=0; uint16_t Color; LCD_SetDispArea(0, 0,239,320); LCD_SetCursor(0 , 0); BANK1_LCD_REG=0x22; if(i<Lenth/2) { Color = (u16)(Image[2*i]<<8) + Image[2*i+1]; BANK1_LCD_RAM=Color; i++; } } /* *函数名: void LCD_Init(void) *描述: 初始化LCD *输入参数: *返回值: *调用方法: 直接调用 */ void LCD_Init(void) { LCD_IOConfig(); LCD_FSMCConfig(); GPIO_ResetBits(GPIOD, GPIO_Pin_12); LCD_WriteReg(0x0000,0x0001); //打开晶振 LCD_WriteReg(0x0003,0xA8A4); //0xA8A4 LCD_WriteReg(0x000C,0x0000); LCD_WriteReg(0x000D,0x080C); LCD_WriteReg(0x000E,0x6800); LCD_WriteReg(0x001E,0x00B0); LCD_WriteReg(0x0001,0x6B3F); //驱动输出控制320*240 0x693F 0x2B3F 0x293F LCD_WriteReg(0x0002,0x0600); //LCD Driving Waveform control LCD_WriteReg(0x0010,0x0000); LCD_WriteReg(0x0011,0x6078); //0x4030 //定义数据格式 16位色 0x6070 横屏 0x6058 LCD_WriteReg(0x0005,0x0000); LCD_WriteReg(0x0006,0x0000); LCD_WriteReg(0x0016,0xEF1C); LCD_WriteReg(0x0017,0x0003); LCD_WriteReg(0x0007,0x0233); //0x0233 LCD_WriteReg(0x000B,0x0000); LCD_WriteReg(0x000F,0x0000); //扫描开始地址 LCD_WriteReg(0x0041,0x0000); LCD_WriteReg(0x0042,0x0000); LCD_WriteReg(0x0048,0x0000); LCD_WriteReg(0x0049,0x013F); LCD_WriteReg(0x004A,0x0000); LCD_WriteReg(0x004B,0x0000); LCD_WriteReg(0x0044,0xEF00); LCD_WriteReg(0x0045,0x0000); LCD_WriteReg(0x0046,0x013F); LCD_WriteReg(0x0030,0x0707); LCD_WriteReg(0x0031,0x0204); LCD_WriteReg(0x0032,0x0204); LCD_WriteReg(0x0033,0x0502); LCD_WriteReg(0x0034,0x0507); LCD_WriteReg(0x0035,0x0204); LCD_WriteReg(0x0036,0x0204); LCD_WriteReg(0x0037,0x0502); LCD_WriteReg(0x003A,0x0302); LCD_WriteReg(0x003B,0x0302); LCD_WriteReg(0x0023,0x0000); LCD_WriteReg(0x0024,0x0000); LCD_WriteReg(0x0025,0x8000); LCD_WriteReg(0x004e,0); //列(X)首址0 LCD_WriteReg(0x004f,0); //行(Y)首址0 } 、、、、、、、、、、、、、、这是LCD.H的、、、、、、、、、、、、、、、、、、、、、 #ifndef _LCD_H_ #define _LCD_H_ #include "include.h" /* Private define ------------------------------------------------------------*/ /* 挂载于不同的BANK,使用不同地址是自行换算 */ #define BANK1_LCD_REG (*((volatile unsigned short *) 0x60000000)) /*RS = 0 ,写寄存器值*/ #define BANK1_LCD_RAM (*((volatile unsigned short *) 0x60020000)) /*RS = 1 ,写寄存器索引*/ /* LCD Color */ #define LCD_COLOR_WHITE 0xFFFF #define LCD_COLOR_BLACK 0x0000 #define LCD_COLOR_GREY 0xF7DE #define LCD_COLOR_BLUE 0x001F #define LCD_COLOR_BLUE2 0x051F #define LCD_COLOR_RED 0xF800 #define LCD_COLOR_MAGENTA 0xF81F #define LCD_COLOR_GREEN 0x07E0 #define LCD_COLOR_CYAN 0x7FFF #define LCD_COLOR_YELLOW 0xFFE0 /** * @brief LCD Registers */ void FMSC_Init(void); void LCD_IOInit(void); void LCD_Init(void); __inline void LCD_WriteReg(uint16_t LCD_Reg,uint16_t LCD_RegValue); void LCD_Clear(uint16_t Color); uint16_t LCD_GetPoint(uint16_t Xpos , uint16_t Ypos); void DispImag(const unsigned char *Image , unsigned int Lenth); #endif

FPGA做从机与arm进行SPI通信,接收数据错位

FPGA做从机与arm spi通信 ,fpga可以正确接收arm发过来的数据,但fpga给arm回发的数据,arm接收总是错位,比如发0x01 arm接收到为0x80,发0x81,arm接收到0xC0,总是右移动了一位,这问题困扰了好几天了,求大神解答,在线等!

STM32F1xx设置外部SRAM为DataMemory的问题

STM32F103ZET6的FSMC总线上挂载一个512K*8bit的外部SRAM,想把堆栈指针放在该SRAM中,就是想在定义变量如int value,该变量value就自动存放在外部的SRAM中。我的开发软件是IAR,我使用了固件库中的例子稍作修改,因为固件库中的外部SRAM是针对16bit数据总线的,在配置FSMC的时候我给改成8Bit的了。在启动文件startup_stm32f10x_hd.s中有这么几句: Reset_Handler LDR R0, =SystemInit BLX R0 LDR R0, =sfe(CSTACK) ; restore original stack pointer MSR MSP, R0 LDR R0, =__iar_program_start BX R0 也就是说在系统进入main函数之前就先调用了一次SystemInit()这个函数,我到这个函数里边去查看发现有初始化FSMC的部分: #if defined (STM32F10X_HD) || (defined STM32F10X_XL) || (defined STM32F10X_HD_VL) #ifdef DATA_IN_ExtSRAM SystemInit_ExtMemCtl(); #endif /* DATA_IN_ExtSRAM */ #endif 在调用完SystemInit_ExtMemCtl();这个函数之后配置FSMC成功了,但是在最后从 SystemInit()函数结束返回后就立即进入了硬件错误中断void HardFault_Handler(void);求大神帮忙分析或者给指一条明路啊!!!

keil软件编译stm32固件库出错,自己改的固件库

.\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_hd_vl.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_ld.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_ld_vl.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_md.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_md_vl.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol WWDG_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_cl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol ADC3_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol DMA2_Channel4_5_IRQHandler multiply defined (by startup_stm32f10x_hd_vl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol DMA2_Channel4_5_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol FSMC_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol SDIO_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol TIM8_CC_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USBWakeUp_IRQHandler multiply defined (by startup_stm32f10x_ld.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USBWakeUp_IRQHandler multiply defined (by startup_stm32f10x_md.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USBWakeUp_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_HP_CAN1_TX_IRQHandler multiply defined (by startup_stm32f10x_ld.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_HP_CAN1_TX_IRQHandler multiply defined (by startup_stm32f10x_md.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_HP_CAN1_TX_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_LP_CAN1_RX0_IRQHandler multiply defined (by startup_stm32f10x_ld.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_LP_CAN1_RX0_IRQHandler multiply defined (by startup_stm32f10x_md.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol USB_LP_CAN1_RX0_IRQHandler multiply defined (by startup_stm32f10x_xl.o and startup_stm32f10x_hd.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol ADC1_IRQHandler multiply defined (by startup_stm32f10x_ld_vl.o and startup_stm32f10x_hd_vl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol ADC1_IRQHandler multiply defined (by startup_stm32f10x_md_vl.o and startup_stm32f10x_hd_vl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol CEC_IRQHandler multiply defined (by startup_stm32f10x_ld_vl.o and startup_stm32f10x_hd_vl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol CEC_IRQHandler multiply defined (by startup_stm32f10x_md_vl.o and startup_stm32f10x_hd_vl.o). .\Objects\leddiyi.axf: Error: L6200E: Symbol TIM1_BRK_TIM15_IRQHandler multiply defined (by startup_stm32f10x_ld_vl.o and startup_stm32f10x_hd_vl.o).都是这样的错误340个

STM32F2系列的复位问题

最近在使用STM32做一个对继电器检测和分析的电路,但是电路板出来之后,发现复位电路基本无效,就是按不按都没有用,单片机根本无法下载程序和运行,看了下网上的很多电路,和我的也都一样如图,图中的RESET是接的单片机NRST,VDD和VSS各通过0欧电阻和3.3V与GND连接了。 ![图片说明](https://img-ask.csdn.net/upload/201901/18/1547778454_920529.png) 测试发现,RESET的电压,S1未按下时候为0.3V-0.4V,按下之后是0V,我考虑在数字电路中这两个电压都是算作低电平的,在RESET管脚应该是有很小的电流流进去了;于是更换了电阻15K为1K,这下RESET的电平,在S1未按下时候为1.5V左右,按下后为0V,之后复位电路就可以正常工作了,下载程序也可以运行。 但是后来又发现个问题,就是当BOOT0置零时候,我希望上电后单片机可以自己启动运行,可是还是需要手动按复位键它才会运行,考虑时间常数(电阻和电容决定的)的问题,我就把电容不断改大,直到改到106的时候,单片机就可以自启动运行了,现在的电路如图![图片说明](https://img-ask.csdn.net/upload/201901/18/1547778946_481263.png) 不知道是网上的图不适合F2系列还是我这里有什么错误?有没有大佬可以分析一下,主要我这个项目对上电时间有要求的,如果单片机启动太久的话会错过信息的检测,所以我对目前这个时间常数还是有点担心的

请问stm32直接操作寄存器怎么建工程啊,和库函数版本一样吗?

请问stm32直接操作寄存器怎么建工程啊,和库函数版本一样吗?求大神指教,本人菜鸟一只

STM32模数转换中出现错误 (referred from lcd.o)

STM32中模数转换出现这样的语句:Error: Undefine symbol FSMC NORSRAMCmd (referred from lcd.o) 要如何解决?求详细步骤。

STM32767的FMC接口采集AD7606的4个通道数据出现了问题,麻烦各位帮忙纠正,没有C币,定有酬谢

问题:我用STM32CUBE配置的FMC接口,用的NE1,配置好后,但发现NE信号和NOE信号始终为高电平,convst信号接TIM3的PWM模式,频率先给2K,BUSY下降沿进入外部中断通过*(__IO uint16_t *)0x60000000地址读取AD采样值,用ST-LINK在线调试发现每次复位后运行程序四个通道只能读回一组数据,并且数据都相同,只有复位再运行才能再读出一组相同数据,求解。 代码如下: #include "stm32f7xx_hal.h" #define AD7606_RESULT() *(__IO uint16_t *)0x60000000 TIM_HandleTypeDef htim3; SRAM_HandleTypeDef hsram1; void SystemClock_Config(void); void Error_Handler(void); static void MX_GPIO_Init(void); static void MX_FMC_Init(void); static void MX_TIM3_Init(void); void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim); int16_t RawData[4]; int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_FMC_Init(); MX_TIM3_Init(); HAL_TIM_PWM_Start(&htim3,TIM_CHANNEL_1); while (1) { } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLM = 25; RCC_OscInitStruct.PLL.PLLN = 432; RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2; RCC_OscInitStruct.PLL.PLLQ = 2; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } if (HAL_PWREx_EnableOverDrive() != HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_7) != HAL_OK) { Error_Handler(); } HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } /* TIM3 init function */ static void MX_TIM3_Init(void) { __HAL_RCC_FMC_CLK_ENABLE(); TIM_MasterConfigTypeDef sMasterConfig; TIM_OC_InitTypeDef sConfigOC; htim3.Instance = TIM3; htim3.Init.Prescaler = 999; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 539; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; if (HAL_TIM_PWM_Init(&htim3) != HAL_OK) { Error_Handler(); } sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; if (HAL_TIMEx_MasterConfigSynchronization(&htim3, &sMasterConfig) != HAL_OK) { Error_Handler(); } sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 269; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; if (HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1) != HAL_OK) { Error_Handler(); } HAL_TIM_MspPostInit(&htim3); } /* FMC initialization function */ static void MX_FMC_Init(void) { FMC_NORSRAM_TimingTypeDef Timing; /** Perform the SRAM1 memory initialization sequence */ hsram1.Instance = FMC_NORSRAM_DEVICE; hsram1.Extended = FMC_NORSRAM_EXTENDED_DEVICE; /* hsram1.Init */ hsram1.Init.NSBank = FMC_NORSRAM_BANK1; hsram1.Init.DataAddressMux = FMC_DATA_ADDRESS_MUX_DISABLE; hsram1.Init.MemoryType = FMC_MEMORY_TYPE_SRAM; hsram1.Init.MemoryDataWidth = FMC_NORSRAM_MEM_BUS_WIDTH_16; hsram1.Init.BurstAccessMode = FMC_BURST_ACCESS_MODE_DISABLE; hsram1.Init.WaitSignalPolarity = FMC_WAIT_SIGNAL_POLARITY_LOW; hsram1.Init.WaitSignalActive = FMC_WAIT_TIMING_BEFORE_WS; hsram1.Init.WriteOperation = FMC_WRITE_OPERATION_DISABLE; hsram1.Init.WaitSignal = FMC_WAIT_SIGNAL_DISABLE; hsram1.Init.ExtendedMode = FMC_EXTENDED_MODE_DISABLE; hsram1.Init.AsynchronousWait = FMC_ASYNCHRONOUS_WAIT_DISABLE; hsram1.Init.WriteBurst = FMC_WRITE_BURST_DISABLE; hsram1.Init.ContinuousClock = FMC_CONTINUOUS_CLOCK_SYNC_ONLY; hsram1.Init.WriteFifo = FMC_WRITE_FIFO_ENABLE; hsram1.Init.PageSize = FMC_PAGE_SIZE_NONE; /* Timing */ Timing.AddressSetupTime = 50; Timing.AddressHoldTime = 0; Timing.DataSetupTime = 60; Timing.BusTurnAroundDuration = 0; Timing.CLKDivision = 0; Timing.DataLatency = 0; Timing.AccessMode = FMC_ACCESS_MODE_A; /* ExtTiming */ if (HAL_SRAM_Init(&hsram1, &Timing, NULL) != HAL_OK) { Error_Handler(); } } /** Configure pins as * Analog * Input * Output * EVENT_OUT * EXTI */ static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; /* GPIO Ports Clock Enable */ __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOK_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); /*Configure GPIO pin : PG12 */ GPIO_InitStruct.Pin = GPIO_PIN_12; GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING; GPIO_InitStruct.Pull = GPIO_PULLDOWN; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); /*Configure GPIO pin : PG9 */ GPIO_InitStruct.Pin = GPIO_PIN_9; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); GPIO_InitStruct.Pin = GPIO_PIN_7; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOG, &GPIO_InitStruct); HAL_GPIO_WritePin(GPIOG, GPIO_PIN_7, GPIO_PIN_SET); /*Configure GPIO pins : PK2 PK0 */ GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_0; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOK, &GPIO_InitStruct); /*Configure GPIO pins : PK2 PK0 */ /* GPIO_InitStruct.Pin = GPIO_PIN_7|GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLDOWN; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);*/ //HAL_GPIO_WritePin(GPIOD, GPIO_PIN_7, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOG, GPIO_PIN_9, GPIO_PIN_RESET); /*Configure GPIO pin Output Level */ HAL_GPIO_WritePin(GPIOK, GPIO_PIN_2|GPIO_PIN_0, GPIO_PIN_RESET); /* EXTI interrupt init*/ HAL_NVIC_SetPriority(EXTI15_10_IRQn, 2, 2); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn); } void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { RawData[0]=AD7606_RESULT(); RawData[1]=AD7606_RESULT(); RawData[2]=AD7606_RESULT(); RawData[3]=AD7606_RESULT(); void Error_Handler(void) { while(1) { } } #ifdef USE_FULL_ASSERT void assert_failed(uint8_t* file, uint32_t line) { } #endif

请教FSMC驱动外部sram

pa = 6; pa=pa<<1; (*((volatile unsigned short *) (0x64000000|pa)))=InitValue; 结果发现,实际的效果为pa=1,和pa反向,无论pa送什么值都是这样,觉得和FSMC的设置有关,请大侠帮看看 static void Board_FSMCConfig(void) { FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure; FSMC_NORSRAMTimingInitTypeDef FSMC_NORSRAMTimingInitStructure; /* FSMC读速度设置 */ FSMC_NORSRAMTimingInitStructure.FSMC_AddressSetupTime = 0x0f; /* 地址建立时间 */ FSMC_NORSRAMTimingInitStructure.FSMC_AddressHoldTime = 0x0f; FSMC_NORSRAMTimingInitStructure.FSMC_DataSetupTime = 0x0f; /* 数据建立时间 */ FSMC_NORSRAMTimingInitStructure.FSMC_BusTurnAroundDuration = 0x00; FSMC_NORSRAMTimingInitStructure.FSMC_CLKDivision = 0x00; FSMC_NORSRAMTimingInitStructure.FSMC_DataLatency = 0x00; FSMC_NORSRAMTimingInitStructure.FSMC_AccessMode = FSMC_AccessMode_B; /* FSMC 访问模式 */ FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM2; FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable; FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM; FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b; FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low; FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState; FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable; FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable; FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable; FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &FSMC_NORSRAMTimingInitStructure; FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* FSMC写速度设置 */ FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); /* Enable FSMC Bank4_SRAM Bank */ FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM2, ENABLE); }

40bit的十六进制数据应该以什么格式输出,用%x输出只有32bit数据。

## # 定义了一个_int64 类型的数据,有40bit的有效数据, 如何能以十六进制的形式打印出来?

大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了

大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

程序员请照顾好自己,周末病魔差点一套带走我。

程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。

ArrayList源码分析(入门篇)

ArrayList源码分析 前言: 写这篇博客的主要原因是,在我上一次参加千牵科技Java实习生面试时,有被面试官问到ArrayList为什么查找的速度较快,插入和删除的速度较慢?当时我回答得不好,很大的一部分原因是因为我没有阅读过ArrayList源码,虽然最后收到Offer了,但我拒绝了,打算寒假学得再深入些再广泛些,下学期开学后再去投递其他更好的公司。为了更加深入理解ArrayList,也为

我以为我学懂了数据结构,直到看了这个导图才发现,我错了

数据结构与算法思维导图

String s = new String(" a ") 到底产生几个对象?

老生常谈的一个梗,到2020了还在争论,你们一天天的,哎哎哎,我不是针对你一个,我是说在座的各位都是人才! 上图红色的这3个箭头,对于通过new产生一个字符串(”宜春”)时,会先去常量池中查找是否已经有了”宜春”对象,如果没有则在常量池中创建一个此字符串对象,然后堆中再创建一个常量池中此”宜春”对象的拷贝对象。 也就是说准确答案是产生了一个或两个对象,如果常量池中原来没有 ”宜春” ,就是两个。...

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

和黑客斗争的 6 天!

互联网公司工作,很难避免不和黑客们打交道,我呆过的两家互联网公司,几乎每月每天每分钟都有黑客在公司网站上扫描。有的是寻找 Sql 注入的缺口,有的是寻找线上服务器可能存在的漏洞,大部分都...

讲一个程序员如何副业月赚三万的真实故事

loonggg读完需要3分钟速读仅需 1 分钟大家好,我是你们的校长。我之前讲过,这年头,只要肯动脑,肯行动,程序员凭借自己的技术,赚钱的方式还是有很多种的。仅仅靠在公司出卖自己的劳动时...

上班一个月,后悔当初着急入职的选择了

最近有个老铁,告诉我说,上班一个月,后悔当初着急入职现在公司了。他之前在美图做手机研发,今年美图那边今年也有一波组织优化调整,他是其中一个,在协商离职后,当时捉急找工作上班,因为有房贷供着,不能没有收入来源。所以匆忙选了一家公司,实际上是一个大型外包公司,主要派遣给其他手机厂商做外包项目。**当时承诺待遇还不错,所以就立马入职去上班了。但是后面入职后,发现薪酬待遇这块并不是HR所说那样,那个HR自...

女程序员,为什么比男程序员少???

昨天看到一档综艺节目,讨论了两个话题:(1)中国学生的数学成绩,平均下来看,会比国外好?为什么?(2)男生的数学成绩,平均下来看,会比女生好?为什么?同时,我又联想到了一个技术圈经常讨...

副业收入是我做程序媛的3倍,工作外的B面人生是怎样的?

提到“程序员”,多数人脑海里首先想到的大约是:为人木讷、薪水超高、工作枯燥…… 然而,当离开工作岗位,撕去层层标签,脱下“程序员”这身外套,有的人生动又有趣,马上展现出了完全不同的A/B面人生! 不论是简单的爱好,还是正经的副业,他们都干得同样出色。偶尔,还能和程序员的特质结合,产生奇妙的“化学反应”。 @Charlotte:平日素颜示人,周末美妆博主 大家都以为程序媛也个个不修边幅,但我们也许...

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

如果你是老板,你会不会踢了这样的员工?

有个好朋友ZS,是技术总监,昨天问我:“有一个老下属,跟了我很多年,做事勤勤恳恳,主动性也很好。但随着公司的发展,他的进步速度,跟不上团队的步伐了,有点...

我入职阿里后,才知道原来简历这么写

私下里,有不少读者问我:“二哥,如何才能写出一份专业的技术简历呢?我总感觉自己写的简历太烂了,所以投了无数份,都石沉大海了。”说实话,我自己好多年没有写过简历了,但我认识的一个同行,他在阿里,给我说了一些他当年写简历的方法论,我感觉太牛逼了,实在是忍不住,就分享了出来,希望能够帮助到你。 01、简历的本质 作为简历的撰写者,你必须要搞清楚一点,简历的本质是什么,它就是为了来销售你的价值主张的。往深...

玩转springboot启动banner定义所得

最近接手了一个springboot项目,不是不熟悉这个框架,启动时打印的信息吸引了我。 这不是我熟悉的常用springboot的打印信息啊,我打开自己的项目: 还真是的,不用默认的感觉也挺高大上的。一时兴起,就去研究了一下源代码,还正是有些收获,稍后我会总结一下。正常情况下做为一个老程序员,是不会对这种小儿科感兴趣的,不就是一个控制台打印嘛。哈哈! 于是出于最初的好奇,研究了项目的源代码。看到

带了6个月的徒弟当了面试官,而身为高级工程师的我天天修Bug......

即将毕业的应届毕业生一枚,现在只拿到了两家offer,但最近听到一些消息,其中一个offer,我这个组据说客户很少,很有可能整组被裁掉。 想问大家: 如果我刚入职这个组就被裁了怎么办呢? 大家都是什么时候知道自己要被裁了的? 面试软技能指导: BQ/Project/Resume 试听内容: 除了刷题,还有哪些技能是拿到offer不可或缺的要素 如何提升面试软实力:简历, 行为面试,沟通能...

离职半年了,老东家又发 offer,回不回?

有小伙伴问松哥这个问题,他在上海某公司,在离职了几个月后,前公司的领导联系到他,希望他能够返聘回去,他很纠结要不要回去? 俗话说好马不吃回头草,但是这个小伙伴既然感到纠结了,我觉得至少说明了两个问题:1.曾经的公司还不错;2.现在的日子也不是很如意。否则应该就不会纠结了。 老实说,松哥之前也有过类似的经历,今天就来和小伙伴们聊聊回头草到底吃不吃。 首先一个基本观点,就是离职了也没必要和老东家弄的苦...

男生更看重女生的身材脸蛋,还是思想?

往往,我们看不进去大段大段的逻辑。深刻的哲理,往往短而精悍,一阵见血。问:产品经理挺漂亮的,有点心动,但不知道合不合得来。男生更看重女生的身材脸蛋,还是...

为什么程序员做外包会被瞧不起?

二哥,有个事想询问下您的意见,您觉得应届生值得去外包吗?公司虽然挺大的,中xx,但待遇感觉挺低,马上要报到,挺纠结的。

当HR压你价,说你只值7K,你该怎么回答?

当HR压你价,说你只值7K时,你可以流畅地回答,记住,是流畅,不能犹豫。 礼貌地说:“7K是吗?了解了。嗯~其实我对贵司的面试官印象很好。只不过,现在我的手头上已经有一份11K的offer。来面试,主要也是自己对贵司挺有兴趣的,所以过来看看……”(未完) 这段话主要是陪HR互诈的同时,从公司兴趣,公司职员印象上,都给予对方正面的肯定,既能提升HR的好感度,又能让谈判气氛融洽,为后面的发挥留足空间。...

面试:第十六章:Java中级开发(16k)

HashMap底层实现原理,红黑树,B+树,B树的结构原理 Spring的AOP和IOC是什么?它们常见的使用场景有哪些?Spring事务,事务的属性,传播行为,数据库隔离级别 Spring和SpringMVC,MyBatis以及SpringBoot的注解分别有哪些?SpringMVC的工作原理,SpringBoot框架的优点,MyBatis框架的优点 SpringCould组件有哪些,他们...

面试阿里p7,被按在地上摩擦,鬼知道我经历了什么?

面试阿里p7被问到的问题(当时我只知道第一个):@Conditional是做什么的?@Conditional多个条件是什么逻辑关系?条件判断在什么时候执...

终于懂了TCP和UDP协议区别

终于懂了TCP和UDP协议区别

你打算用Java 8一辈子都不打算升级到Java 14,真香

我们程序员应该抱着尝鲜、猎奇的心态,否则就容易固步自封,技术停滞不前。

无代码时代来临,程序员如何保住饭碗?

编程语言层出不穷,从最初的机器语言到如今2500种以上的高级语言,程序员们大呼“学到头秃”。程序员一边面临编程语言不断推陈出新,一边面临由于许多代码已存在,程序员编写新应用程序时存在重复“搬砖”的现象。 无代码/低代码编程应运而生。无代码/低代码是一种创建应用的方法,它可以让开发者使用最少的编码知识来快速开发应用程序。开发者通过图形界面中,可视化建模来组装和配置应用程序。这样一来,开发者直...

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

《经典算法案例》01-08:如何使用质数设计扫雷(Minesweeper)游戏

我们都玩过Windows操作系统中的经典游戏扫雷(Minesweeper),如果把质数当作一颗雷,那么,表格中红色的数字哪些是雷(质数)?您能找出多少个呢?文中用列表的方式罗列了10000以内的自然数、质数(素数),6的倍数等,方便大家观察质数的分布规律及特性,以便对算法求解有指导意义。另外,判断质数是初学算法,理解算法重要性的一个非常好的案例。

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

正确选择比瞎努力更重要!

Java岗开发3年,公司临时抽查算法,离职后这几题我记一辈子

前几天我们公司做了一件蠢事,非常非常愚蠢的事情。我原以为从学校出来之后,除了找工作有测试外,不会有任何与考试有关的事儿。 但是,天有不测风云,公司技术总监、人事总监两位大佬突然降临到我们事业线,叫上我老大,给我们组织了一场别开生面的“考试”。 那是一个风和日丽的下午,我翘着二郎腿,左手端着一杯卡布奇诺,右手抓着我的罗技鼠标,滚动着轮轴,穿梭在头条热点之间。 “淡黄的长裙~蓬松的头发...

面试官:你连SSO都不懂,就别来面试了

大厂竟然要考我SSO,卧槽。

终于,月薪过5万了!

来看几个问题想不想月薪超过5万?想不想进入公司架构组?想不想成为项目组的负责人?想不想成为spring的高手,超越99%的对手?那么本文内容是你必须要掌握的。本文主要详解bean的生命...

我说我懂多线程,面试官立马给我发了offer

不小心拿了几个offer,有点烦

爬虫(九十七)不爬妹子图的爬虫不是一只好爬虫

不爬妹子图的爬虫不是一只好爬虫。----鲁迅还是一样,我们在爬取妹子图片的时候,首先要分析一下 DOM这里的img是就封面,如果只抓取封面的话,到这就可以了,但是我们取的是所有图片,所...

自从喜欢上了B站这12个UP主,我越来越觉得自己是个废柴了!

不怕告诉你,我自从喜欢上了这12个UP主,哔哩哔哩成为了我手机上最耗电的软件,几乎每天都会看,可是吧,看的越多,我就越觉得自己是个废柴,唉,老天不公啊,不信你看看…… 间接性踌躇满志,持续性混吃等死,都是因为你们……但是,自己的学习力在慢慢变强,这是不容忽视的,推荐给你们! 都说B站是个宝,可是有人不会挖啊,没事,今天咱挖好的送你一箩筐,首先啊,我在B站上最喜欢看这个家伙的视频了,为啥 ,咱撇...

代码注释如此沙雕,会玩还是你们程序员!

某站后端代码被“开源”,同时刷遍全网的,还有代码里的那些神注释。 我们这才知道,原来程序员个个都是段子手;这么多年来,我们也走过了他们的无数套路… 首先,产品经理,是永远永远吐槽不完的!网友的评论也非常扎心,说看这些代码就像在阅读程序员的日记,每一页都写满了对产品经理的恨。 然后,也要发出直击灵魂的质问:你是尊贵的付费大会员吗? 这不禁让人想起之前某音乐app的穷逼Vip,果然,穷逼在哪里都是...

立即提问
相关内容推荐