STM32调试经验.docx
《STM32调试经验.docx》由会员分享,可在线阅读,更多相关《STM32调试经验.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品word 可编辑资料 - - - - - - - - - - - - -PVD/ 可编程电压检测器1. Lib 中加入 stm32f10x_pwr.c 和 bkp.c 文件;2. 去掉 conf.h 中的两个注释3. 开启时钟APB1 的 BKP和 PWR4. PVD的中断时位于EXTI16上的外部中断5. 详细步骤: 缺省值设置, 清中断标志位, 挑选中断线路, 模式, 触发方式, 线路使能, 初始化结构体,后备寄存器操作使能,设置电压的阀值,使能PVD6. 中断的优先级举荐挑选抢占最高级7. PVD中断中储存的数据量和供电的电源上的电容大小有肯定关系;SPI/ 串行外设接口1. 加入
2、spi.c 文件 ,去掉 conf.h 中的两个注释2. 开启时钟APB2(SPI1,)开启端口复用3. 配置 SPI的 MISO,MOSI,Clock,NSS复( 用推挽输出,浮空输入,NSS挑选软件模式不需要配置,但是模块的NSS仍是需要设置的)4. 用开发板的话,需要失能其他不用的SPI模块,防止显现问题;5. 结构体数组初始化,模式,极性,相位,校验,等等;6. SPI 的发送和接收,SPI读数据需要发送任意数据才能读;(缘由是主设备供应时钟)7. SPI 的NSS 引脚在硬件模式下可输入可输出,设置主模式输出模式的时候需要SPI_SSOutputCmd(SPI1, ENABLE);8
3、.(16.6.14)SPI不用中断的发送接收函数测试:SPI是全双工,读写分别有数据线,共用 SCK时钟,写,读是同步进行,不过操作详细芯片的时候,返回值要依据芯片的 datasheet 操作;所以一般读的时候都需要写数据启动时钟;9. (16.7.27)用 IO 口模拟时序的时候,MOSI 和 MISO 的初始化引脚置高2021/3/11. B 码程序 MAX485 在无输入信号的情形下,输出保持高电平;2. 定时器输入捕获的时候,捕获上升沿时 ,捕获引脚设置为下拉输入;3. 上拉输入:外部无信号输入时,引脚电平保持高电平(比如I2C)4. 在定时器输入捕获时,捕获引脚设置成浮空输入的话,引
4、脚电平状态是不稳固的,有波动2021/3/30I2C1. STM32 的硬件I2C 模块不稳固,使用软件模拟时序的方式使用I2C 模块,硬件I2C存在 Bug.2. FATFS32的 MP3 程序在支持中文文件名之后存在目录读取英文文件名失败的现象, 此问题未解决(已解决,指针地址没有回送);2021/4/5CAN1. 在设置一个寄存器之前,相应的位先清空,再设置;第 1 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -2. CAN 总线告一段落,设置CAN 总线 CAN_InitTypeDef (设置工作模式
5、,波特率)和CAN_FilterInitTypeDef(设置屏蔽滤波器) ;3. 设置发送报文的ID 格式, IDE, RTR,数据等参数CanTxMsg 和 CanRxMsg ;4. 相应的中断; 屏蔽过滤寄存器关联FIFO,FIFO0 时是 USB_LP_CAN1_RX0_IRQHandle;rFIFO1 时是 CAN1_RX1_IRQHandler;2021/4/5中断1 Stm32f10x_it.c 中的中断名称是在 startup_stm32f10x_hd.s中查找添加;2 NVIC 组治理中的中断通道名称是在stm32f10x_it.h 中查找添加;2021/4/13Systick
6、 和 TFT触摸屏1. systick 在设置成1us 中断时,简单显现问题,详细的等液晶触摸屏功能实现后再测试;2. TFT 触摸屏使用SPI通信时, SPI 的频率挑选速度太快(8 分频)时,高电平的时间达不到 200ns,会丢失数据;3. 等差数列中位数(a0+an) /24. 触摸屏使用中断法画点的时候,显现描点特别慢的现象;解决:由于串口不停的在打印消息占用中断资源,在描点的时候不要打印5. 液晶取模软件的使用,字模 3 和 LCD2002完善版, 取模的方式不同,字模 3 是整体取模,但是LCD是每个字单独取模,所以编程上不同;2021.8.42021/4/23定时器推迟函数1.定
7、时器更新标志位放在结构体初始化前清空标志位2021/4/25Modbus之 CRC校验1. 串口发送数据时或者检测定时器更新大事时,通过读SR的相应标志位保证发送或者大事的发生;2. Modbus 的 CRC16校验在发送时是低 8 位在前,高8 位在后;3. 留意运算符的优先级问题;4. 对于 memcpy( 目标数组,源数组,个数);5. A.b:c如 A 为真,就表达式b;如 B 为假,就表达式C2021/4/27SD response ,数据地址第 2 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -1
8、. Some SDs command have response, their saved in SDIO_RESPx register.2. When writethe addresss data, if address=0, Data width is 4.So when you writein the address 3, you should be 3*4=12 , Use 12 replace 3.Example: Address 0use 0 1 2 3, Address1use 4 5 6 7 ,Address2head address= 2*4=8 9 10 11.Exampl
9、e: Sector * block size上面是应用在字节一一对应3. normalu16 a=1,2,3;a 的地址假如是m ,那么 a1 的地址就是m+2 u32 的数组就是m+4 u8的数组就是m+12021/4/28SPI1. SPI的接收寄存器SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;/ 没有数据传输的时候,时钟保持低电平SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; / 在第一个时钟边沿处理数据2021/4/291.外部中断模式的挑选,挑选是中断模式仍是大事模式2021/5/51. 平 年 闰 年
10、 判 断 if(timesVal5%400=0)|(timesVal5%4=0)&(timesVal5%100.=0) /假如为闰年DaysOfMouth1=29;elseDaysOfMouth1=28;2021/5/13中断一. 电平同时变化1. 中断上下边沿的时间间隔1us 时; (即高电平保持1us)结论:丢失STM32 外部中断比如,EXTI95的中断,挑选PB6,PB7 作为外部中断输入,假如外部中断同时来的话,比如:先下降后上升,第一个边沿都能进中断函数,并且依据函数次序处理(只进一次中断), 但是,当其次个边沿来时会丢失函数次序靠后的中断线函数;2. 中断上下边沿的时间间隔1ms
11、 时 (即高电平保持1ms)结论:不丢失STM32 外部中断线都能很好的进入相应的中断处理函数,比如Line6 与 Line7 都可以相应的判定处理;前提是中断处理函数中的程序小于1ms3.一般在编程的时候中断中函数用systick 运算时间; Systick 的 us 级中断使用时, 在 systick 中断函数中的程序就不能超过1us 否就死中断了;4.外部中断设置上下降沿双触发时,触发上升沿后再触发下降沿时,STM32 内核可能需要时间设置,所以假如脉冲边沿间隔时间太短简单丢失,1us 会丢失;第 3 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 -
12、- - - - - - - - - - - -二. 电平单独线路中断1.单个中断线的中断,当中断处理函数执行时间t 大于电平跳变时间t2 时,假如设置捕获上升下降跳变中断t2 的下降 (或上升 )沿中断会丢失;三. STM32 的中断与大事产生中断肯定产生大事,大事不行屏蔽,中断可以屏蔽2021/5/18串口不用microLib的打印1. 不用 microLib 的 printf 函数,自己的版本需要改写;原子的源码和自己写的串口初始化程序有点问题, fput 需要改动待测的标志位;2021/7/2LWIP 源码无法PING通对应 GPIO 口需要改写,在初始化的时候,特别是复位口,仍有片选口
13、,肯定需要给确定的状态,在移植时,源码的片选操作端口也要对应的改2021/7/41.LWIP 源码网页无法打开2.LWIP 网页无法刷新1. 数据包发送函数调用的写buff 函数时序规律错误和datasheet 不相符合 (多加了一句空指令);2. 发送函数的计数初值类型u8 过小,实际为u16 ,网页实质已经刷新,但是前256 个数据一样,所以造成没有刷新的假象;2021/7/14 2021/7/29nrf24l01 调试体会1. 串口调试助手,在选HEX 发送时,发0x01 时,只要输入01发送就是0x012. 在调试的时候, 特别是调试开发板的时候,肯定需要检查板子上一些模块可能共用的总
14、线有干扰3. STM32 在上电后只要是没有初始化的端口,GPIO 的属性都是低电平4. 51 单片机上电后只要是没有给初值的端口,IO 口都是高电平5. NRF24L01 工作在增强型shockburst模式时, 发送和接收模式都需要设置自动重发功能,增强型比一般型更加牢靠,有应答和自动重发的功能;6. 操作新的模块时肯定需要把工作模式和寄存器的配置弄清晰7. 在头文件里定义数组的时候,需要加static 否就,在放在STM32f10x.h 一起包含的时候,会显现重复定义;函数声明放在.h 中就不会显现;8. 在配置无线模块地址时,地址宽度P0, P1 的地址最长5 位,模块先写地址低字节,
15、P1-P5 的地址只有最低位可以设置;9. 自动应答模式和自动重发关闭时,实测速率可达64KB/s,自动应答模式下速率40KB/s.10. 只有 P0 地址可以接受自动应答,而且发送端发送地址等于接收地址;STM32 下载完有变化的程序后,假如显现没有变化,那么断电再开;前一次和后一次外设时钟关闭有可能没关掉,得重启2021/8/31STM32 的 I2C第 4 页,共 12 页 - - - - - - - - - -精品word 可编辑资料 - - - - - - - - - - - - -一. C语言编程函数1. Strstr(str1 , str2 )strstr(str1,str2)函
16、数用于判定字符串str2 是否是 str1 的子串;假如是,就该函数返回str2 在 str1 中首次显现的地址;否就,返回NULL;char *strcpy(char* dest, const char *src);说明: src 和 dest 所指内存区域不行以重叠且dest 必需有足够的空间来容纳src 的字符串;返回指向 dest 的指针;2. abs(int i)求肯定值3. sqrt(a), a=0开平方4. int sprintf( char *buffer,const char *format, argument);将 String:%sn强制转换写入到buffer200 的数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32 调试 经验
限制150内