STM32开发记录 外设调试记录总结


STM32开发记录

PVD(可编程电压检测器)

  1. 在Lib中加入stm32f10x_pwr.cbkp.c文件。
  2. 去掉conf.h中的两个注释。
  3. 开启时钟APB1的BKP和PWR。
  4. PVD的中断位于EXTI16上的外部中断。
  5. 具体步骤:
    • 缺省值设置
    • 清中断标志位
    • 选择中断线路、模式、触发方式
    • 线路使能,初始化结构体
    • 后备寄存器操作使能,设置电压阀值,启用PVD
  6. 中断的优先级推荐选择抢占最高级。
  7. PVD中断中保存的数据量与供电电源上的电容大小相关。

SPI(串行外设接口)

  1. 加入spi.c文件,去掉conf.h中的两个注释。
  2. 开启时钟APB2(SPI1),开启端口复用。
  3. 配置SPI的MISO、MOSI、Clock、NSS(复用推挽输出,浮空输入)。
  4. 开发板上需失能不使用的SPI模块。
  5. 结构体数组初始化,包括模式、极性、相位、校验等。
  6. SPI的发送和接收需发送任意数据才能读取(因主设备提供时钟)。
  7. SPI的NSS引脚在硬件模式下可输入可输出,设置主模式时需调用SPI_SSOutputCmd(SPI1, ENABLE)
  8. SPI全双工特性,读写同步进行,注意芯片的datasheet。
  9. 使用IO口模拟时序时,MOSI和MISO初始化引脚应置高。

I2C

  1. STM32的硬件I2C模块不稳定,建议使用软件模拟时序方式。
  2. FATFS32的MP3程序在支持中文文件名后,存在目录读取英文文件名失败的问题(已解决,指针地址未回送)。

CAN

  1. 设置寄存器前需先清空相应位。
  2. 设置CAN总线的工作模式和波特率。
  3. 设置发送报文的ID格式及参数。
  4. 关联相应的中断,屏蔽过滤寄存器与FIFO关联。

中断

  1. 中断名称在stm32f10x_it.c中查找添加。
  2. NVIC组管理中的中断通道名称在stm32f10x_it.h中查找添加。

定时器延迟函数

  • 定时器更新标志位应在结构体初始化前清空。

Modbus CRC校验

  1. 串口发送数据时,检测定时器更新事件。
  2. Modbus的CRC16校验发送时低8位在前,高8位在后。
  3. 注意运算符优先级。

SD响应与数据地址

  1. SD命令的响应保存在SDIO_RESPx寄存器中。
  2. 写地址数据时,地址需乘以4。

C语言编程函数

  1. strstr(str1, str2):判断str2是否是str1的子串。
  2. abs(int i):求绝对值。
  3. sqrt(a):开平方。
  4. sprintf:将格式化字符串写入缓冲区。
  5. 宏定义示例及用法。
  6. 字节内存填充,使用__packed关键词。
  7. C语言中的四种存储类别及其特点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2401_87496566

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值