STM32学习笔记
型号:
STM32学习笔记 版本:
页次: 1
STM32学习笔记
型号:
STM32学习笔记 版本:
页次: 2
一( 关于RCC_Configuration
RCC的配置函数,这个函数配置STM32的时钟,里面的函数都为STM32的库函数 void RCC_Configuration(void)
{
/* RCC system reset(for debug purpose) */ /* 复位所有的RCC外围设备寄存器,不改变内部高速振荡器调整位(HSITRIM[4..0])以及
备份域控制寄存器(RCC_BDCR),控制状态寄存器RCC_CSR */ RCC_DeInit();
/* Enable HSE */
/* 开启HSE振荡器 */
/* 三个参数
RCC_HSE_ON 开启
RCC_HSE_OFF 关闭
RCC_HSE_BYPASS 使用外部时钟振荡器
*/
RCC_HSEConfig(RCC_HSE_ON);
/* Wait till HSE is ready */
/* HSEStartUpStatus为枚举类型变量,2种取值,0为ERROR,非0为SUCCESS 等待HSE准备好,若超时时间到则退出*/
HSEStartUpStatus = RCC_WaitForHSEStartUp(); /* 当HSE准备完毕切振荡稳定后 */
if(HSEStartUpStatus == SUCCESS) {
/* HCLK = SYSCLK */
/* 配置AHB时钟,这个时钟从SYSCLK分频而来
分频系数有1,2,4,8,16,64,128,256,512
*/
型号:
STM32学习笔记 版本:
页次: 3
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
/* 设置低速APB2时钟,这个时钟从AHB时钟分频而来
分频系数为1,2,4,8,16 */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */
/* 设置低速APB1时钟,这个时钟从AHB时钟分频而来
分频系数为1,2,4,8,16 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* PLLCLK = 8MHz * 9 = 72 MHz */ /* 设置PLL的时钟源和乘法因子
第一个入口参数为时钟源,共有3个
RCC_PLLSource_HSI_Div2 RCC_PLLSource_HSE_Div1
RCC_PLLSource_HSE_Div2
乘法因子RCC_PLLMul_2~RCC_PLLMul_16,之间参数连续
*/
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* Enable PLL */
/* 输入参数为ENABLE及DISABLE */
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
{
}
型号:
STM32学习笔记 版本:
页次: 4
/* Select PLL as system clock source */ /*选择系统时钟源,三个参数
RCC_SYSCLKSource_HSI 内部高速振荡器
外部高速振荡器 RCC_SYSCLKSource_HSE
RCC_SYSCLKSource_PLLCLK PLL时钟
*/
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source */
/* 返回系统当前的时钟源
返回值有3种
0x00 HSI是当前时钟源
0x04 HSE是当前时钟源
0x08 PLL是当前时钟源
*/
while(RCC_GetSYSCLKSource() != 0x08)
{
}
}
/* Enable GPIOB, GPIOC and AFIO clocks */ /* 使能低速总线APB2上的外围设备
这里打开了IO端口B的时钟
AFIO是重映射功能的时钟,一般未使用REMAP功能时,此时钟不必开启
输入参数见UM0472 PAGE 426
*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); }
广州御银科技股份有限公司 型号: PT075
主控制器程序流程图 版本: V1.0
页次: 5
二( STM32GPIO设定
GPIO_Mode_AIN = 0x0, 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, 浮空输入
GPIO_Mode_IPD = 0x28, 带下拉输入
GPIO_Mode_IPU = 0x48, 带上拉输入
GPIO_Mode_Out_OD = 0x14,
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示配置相应管脚为GPIO开漏输出(真双向IO)
GPIO_Mode_Out_PP = 0x10, 通用推挽输出模式
GPIO_Mode_AF_OD = 0x1C, 表示配置相应管脚为复用功能的开漏输出
GPIO_Mode_AF_PP = 0x18 复用功能的推挽输出模式
推挽输出:可以输出高,低电平,连接数字器件;推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止.
开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内). 要实现 线与 需要用OC(open collector)门电路.是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小,效率高。输出既可以向负载灌电流,也可以从负载抽取电流。但用作纯粹的输出时,可以选用GPIO_Mode_Out_PP,但是有些硬件上有要求用开发射极的结构就要用GPIO_Mode_Out_OD 。如果既要用于输出,又要接收信号作输入,无需改变该pin的工作模式,只需设定为输入浮点状态GPIO_Mode_IN_FLOATING ,但是读的时候读输入寄存器(GPIOE->IDR)的值。输出值照样设定,不过输出pin脚可能要硬件上 上拉。
三( NVIC:系统中断管理
NVIC:嵌套向量中断控制器~管理系统内部的中断~负责打开和关闭中断。