ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

STM32 学习笔记(1)

STM32 学习笔记(1) 芯片STM32F103C8T6内核ARM Cortex-M3供电2.0–3.6V标准 3.3V封装LQFP48一、片上外设 / 资源英文缩写名称英文缩写名称NVIC嵌套向量中断控制器CANCAN 通信SysTick系统滴答定时器USBUSB 通信RCC复位和时钟控制RTC实时时钟GPIO通用 IO 口CRCCRC 校验AFIO复用 IO 口PWR电源控制EXTI外部中断BKP备份寄存器TIM定时器IWDG独立看门狗ADC模数转换器WWDG窗口看门狗DMA直接内存访问DAC数模转换器USART通用同步/异步收发器SDIOSD 卡接口I2C集成电路总线FSMC可变静态存储控制器SPI串行外设接口USB OTGUSB 主机接口二、系统结构三、启动模式BOOT1BOOT0启动模式说明X0主闪存存储器主闪存存储器被选为启动区域01系统存储器系统存储器被选为启动区域11内置 SRAM内置 SRAM 被选为启动区域四、最小系统电路五、引脚六、启动文件区分缩写释义Flash 容量型号LD_VL小容量产品超值系列16–32KSTM32F100MD_VL中容量产品超值系列64–128KSTM32F100HD_VL大容量产品超值系列256–512KSTM32F100LD小容量产品16–32KSTM32F101/102/103MD中容量产品64–128KSTM32F101/102/103HD大容量产品256–512KSTM32F101/102/103XL加大容量产品大于 512KSTM32F101/102/103CL互联型产品-STM32F105/107七、新建工程7.1 新建工程步骤建立工程文件夹Keil 中新建工程选择型号工程文件夹里建立Start、Library、User等文件夹复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组然后将文件夹内的文件添加到工程分组里工程选项 → C/C → Include Paths 内声明所有包含头文件的文件夹工程选项 → C/C → Define 内定义USE_STDPERIPH_DRIVER工程选项 → Debug → 下拉列表选择对应调试器 → Settings → Flash Download 里勾选Reset and RunSTM32 的开发方式主要有三种开发方式原理优点缺点适用人群寄存器方式直接操作寄存器与 51 单片机开发方式一致最底层、最直接、执行效率高寄存器数量多、结构复杂开发效率低想深入理解芯片底层原理的开发者标准库库函数方式调用 ST 官方封装好的函数间接配置寄存器代码可读性好、开发效率高、资料丰富需要手动管理工程文件与头文件大多数初学者与项目开发者HAL 库方式通过图形界面STM32CubeMX快速配置外设并生成代码上手快、可图形化配置、便于跨芯片移植封装层次高、运行效率略低、调试时不易看清底层有基础、追求开发效率的开发者补充函数库在新建工程时会用到具体使用方法可参考 ST 官方手册或库函数说明文档。7.2 寄存器方式配置3个寄存器就可以点亮灯第一个寄存器配置时钟使能IOPC-APB2ENR、就可以打开时钟。GPIO都是APBB2的外设第二个寄存器配置PC13口模式将13口位置配置为0011其他的为0转换为16进制为0x00300000。GPIOC(x表示A-Z)-CRH口的模式配置第3个GPIOC输出ODR13写1高电平0低电平可得到0x00002000灯为低电平亮全为0亮现在为2灭把2改0灯亮7.3 标准库函数形式STM32 点灯 —— PC13 LED芯片STM32F103C8T6 库标准外设库 工具Keil MDK完整代码#includestm32f10x.hintmain(void){/* 1. 开启 GPIOC 的时钟 */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);// 开时钟/* 2. 配置 GPIO 初始化结构体 */GPIO_InitTypeDef GPIO_Initstructure;GPIO_Initstructure.GPIO_ModeGPIO_Mode_Out_PP;// 推挽输出GPIO_Initstructure.GPIO_PinGPIO_Pin_13;// PC13GPIO_Initstructure.GPIO_SpeedGPIO_Speed_50MHz;GPIO_Init(GPIOC,GPIO_Initstructure);/* 3. 设置 PC13 输出高电平LED 熄灭 / 依据电路而定 */GPIO_SetBits(GPIOC,GPIO_Pin_13);// 输出高电平灭// GPIO_ResetBits(GPIOC, GPIO_Pin_13); // 输出低电平亮while(1){}}要点步骤代码说明开时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);外设使用前必须先开时钟配模式GPIO_Mode_Out_PP推挽输出选引脚GPIO_Pin_13PC13板载 LED初始化GPIO_Init(GPIOC, GPIO_Initstructure);写入配置设电平GPIO_SetBits/GPIO_ResetBits高电平灭 / 低电平亮7.4 标准库工程架构库函数与寄存器描述用户 / 系统文件startup_xx.s复位中断其他中断system_xx.c / .h定义 SystemInitmain.c定义 mainstm32f10x_it.c / .h定义中断处理函数其他用户文件stm32f10x.h外设寄存器描述core_cm3.c / .h内核寄存器描述misc.c / .hstm32f10x_adc.c / .h ……库函数stm32f10x_conf.h库函数配置参考STM32 入门教程 - 2023 版
返回列表