STM32的自起:
第一种启动方式:
选择从主Flash启动 ,也就是默认的启动方式,当通过串口下载完成程序之后,必须切换到此种方式才能正常启动。
第二种启动方式:
这种启动方式执行stm32内部自带程序,这种方式用于通过串口下载程序。
第三种启动方式:
这种方式从内部的SRAM开始启动程序,这种方式用于STM32的调试使用。
现在支持串口1 串口3 usb can等方式下载程序。
stm32的GPIO,stm32的IO口支持上拉下拉 推挽 开漏这几种输出模式,支持上拉下拉 模拟 浮空这几种输出模式
上拉下拉顾名思义就是内部通过电阻接地或者接了 电源
图上就是传说中的开漏输出,开漏输出可以做电压转换,也可以做线与。如果把图三中的电阻也换做图一的开关的话,就变成了推挽输出了。
stm32以太网遵循IEEE 802.3 ,它支持两个工业标准接口 介质独立接口(MII)和简化介质独立接口(RMII)
支持外部PHY接口实现10/100Mbit/s的传输速率
支持全双功和半双功的操作
spi接口:
spi最初是由摩托罗拉发明的,SPI总线系统是一种同步串行外设接口,它有四根线组成分别为主机输入从机输出(MISO) 主机输出从机输入(MOSI)低电平片选(NSS) 时钟线(clk),有的spi芯片还带有中断 功能 有的没有MOSI信号线。 spi 内部有两个数据缓冲区,,数据在时钟信号线的作用下移位输入输出,他以全双工的方式进行通讯,数据高位在前低位在后,他的工作速率能够达到几Mbps. spi主要使用在EEPROM LCD 实时时钟 电源 管理芯片等,MCU通过SPI总线和外围设备进行数据传输。
SPI的初始化:
SPI_InitTypeDef SPI_InitStructure;
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //SPI设置为双线双向全双工
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //设置为主 SPI
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //SPI发送接收 8 位帧结构
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; //时钟悬空高
SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; //数据捕获于第二个时钟沿
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //内部 NSS 信号有 SSI位控制
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; //波特率预分频值为 4
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //数据传输从 MSB 位开始
SPI_InitStructure.SPI_CRCPolynomial = 7; //定义了用于 CRC值计算的多项式 7
SPI_Init(SPI1, &SPI_InitStructure);
SPI_Cmd(SPI1, ENABLE); //Enable SPI1
SPI有四种工作模式由CPOL CPHA 两位控制
CPOL(clock portity)
为0时,空闲时候为低电平
为1时,空闲时候为高电平
CPHA(cloak phase)
为0时,时钟周期的前一边缘采集数据,时钟周期的后一边缘输出数据
为1时,时钟周期的后一边缘采集数据,时钟周期的前一边缘输入数据