c语言程序编译原理STM32HAL开发API索引简记

解析stm32内部的存储原理

编译——汇编——链接
编译:c源码变为汇编语言*.s的过程
汇编:汇编语言变为机器语言*.o的过程
链接:多个.o文件按顺序合并成一个可执行文件
对于一个c语言程序,其内存主要分为、代码段(存放程序执行代码)、数据段(已被初始化的全局变量或静态变量)、静态区(隐式初始化的全局变量或静态变量)、栈stack(编译器分配的)、堆heap(程序员分配,不连续,自由空间更多)

单片机上通常由ROM和RAM
STM32上的Flash 就是它的ROM 从0x0800 0000开始 结束地址再加上它的容量
Flash内部存储程序代码和const类型变量
SRAM则存储运行时的变量,掉电丢失
FLASH 包含主存储器(代码和const)、系统存储器(厂家配置的串口,usb烧录等程序)、 OTP 区域(flash控制寄存器区)以及选项字节区
为了使用Flash内部巨大的空间,可以看编译生成的map文件来确认flash的使用情况进而写入flash内数据
HAL_FLASHEx_Erase(Flash_EraseInitTypedef* ,SectorErros*存储flash擦除错误时的页面号)
HAL_FLASH_Program(选择写入的数据格式(8/16/32), 地址,数据)
Flash中读数据就用memcpy(放地址,取地址,几个8位)
HAL_FLASH_Unlock为flash写数据或者擦除时都要为flash解锁
HAL_FLASH_Lock

STM32HAL库的API简记

HAL_GPIO_WritePin 写电平HAL_GPIO_ReadPin读电平
HAL_GetTick获得当前时刻tick值
HAL_Delay
HAL_GPIO_TogglePin电平反转

定时器开启(无中断):HAL_TIM_Base_Start 有IT后缀的是有中断的函数
aRGB 是透明度加三原色,透明度越大越不透明
_HAL_TIM_PWM_Start开始输出PWM
_HAL_TIM_Setcompare(句柄,通道,值)修改CCRX比较寄存器的值

ADC_ChannelConfTypeDef 先用它对ADC的各个结构体赋值
HAL_ADC_ConfigChannel来为ADC设置各个通道值
HAL_ADC_Start开启ADC转换
HAL_ADC_PollForConversion等待ADC转换结束 最后参数为最大等待时间
HAL_ADC_GetValue 获取ADC值

HAL_UART_ENABLE_IT使能串口功能,含中断
HAL_UART_TxCpltCallback为其发送中断回调函数

HAL_DMA_ENABLE

HAL_I2C_Mem_Read(句柄、从机地址、寄存器地址、寄存器地址增加大小(8/16),数据指针、数据长度、超时时间)
HAL_I2C_Mem_Write参数相同

如果要使用HAL的SPI的API的话,如果要使用DMA,那么在全双工模式时,同时使用DMA的API,是默认需要tx和rx都使用,且二者发送接收数据长度相同的这就可能会导致一些数据读错,此外,在,
HAL_SPI_TransmitRecceive(句柄,发送数据指针、接收数据指针、数据长度、最大发送时间)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值