GPIO输出操作—使用固件库点亮LED--- 调试总结
来源:互联网 发布:3g软件开发了解 编辑:程序博客网 时间:2024/06/07 13:32
GPIO输出操作—使用固件库点亮LED--- 调试总结
--------【王晓南于2016年11月12日下午编写此调试笔记】
1.代码写完毕后,keil5(MDK-ARM)编译通过,".\Objects\Gokit V2.axf" - 0 Error(s), 0 Warning(s).
2.通过STMFlashLoader Demo.exe(,ST官方ISP下载最新工具),Cortex-M3串口对STM32【Gokit v2.1开发板(stm32F103c8t6)】下载提示成功。
3.Gokit v2.1板子上电,将system开关拨至flash;按下复位按键,开始运行板子,GPIOB_Pin_11引脚连接的LED3灯没被点亮。给板子断电,上电复位,依然如此。
4.检查代码,由于使用库函数写的代码,依次检查main.c、bsp_LED.h和bsp_LED.c三个文件代码是否存在错误,发现main函数中已初始化GPIO口,已使用置位函数将GPIOx_Pin置位;main函数应该没什么问题;检查bsp_LED.c代码,只有一个GPIO口初始化函数,先定义了一个GPIO口初始化结构体/结构体成员赋值/调用库函数将初始化GPIO目标引脚为推免输出模式/,检查bsp_LED.h头文件宏定义和函数的声明都正确;代码核查后未找出BUG;
5.使用Keil(MDK-ARM)在线调试,发现问题*** error 65: access violation at 0x40021000 : no 'read' permission。且代码执行部分后,相应寄存器值未发生改变,设置默认的复位值都不正确。
6.在STM32F10x系列参考手册查询该地址对应为何地址空间,查询到为闪存存储器接口地址空间。
7.现在已经明白了,代码无法读写此地址空间内的存储器。查询工程模板设置是否存在问题,查询opitons for Target魔术选项卡是否设置错误。
8.设置好Debug选项卡里的Dialog DLL和Parameter
因为Gokit v2.1板子上使用的是STM32F103C8芯片,所以Dialog DLL设置为DARMSTM.DLL ;Parameter设置为-pSTM32F103C8
9.再次编译,keil5(MDK-ARM)编译通过,".\Objects\Gokit V2.axf" - 0 Error(s), 0 Warning(s).使用Keil(MDK-ARM)在线调试,command窗口无读写错误提示,设置断点全速运行代码,相应寄存器值监控发生改变。已按代码执行到目标值配置好相应的寄存器。
10.编译生产hex文件,保存工程,使用STMFlashLoader Demo将代码烧录到Gokit v2.1板子上,Gokit v2.1板子上电,将system开关拨至flash;按下复位按键,开始运行板子,GPIOB_Pin_11引脚连接的LED3灯没被点亮。给板子断电,上电复位,依然未点亮LED3。
。。。说明只解决了部分问题,依然存在其他bug!
11.返回工程,检查代码,因为在线调试过程中相应寄存器都已按代码执行,写入正确值。但下载到板子中LED3却未被点亮,怀疑灯点亮时间太短,肉眼未识别出来,断点代码单步执行,发现最终代码执行到库函数中while(1)就停止了,猜想正确,代码未在main函数体中自动循环,加上while大循环,问题解决。下载到板子中LED3成功点亮。
12.此次代码bug调整花了2个小时左右,前期反复查看代码,并未找出bug,后期直接在线调试监控寄存器状态和监控变量值发现存在问题;网上查询此问题产生原因,找到使用模拟器仿真时,debug选项卡参数设置存在问题,修改参数,在线调试,可正常读写闪存,后面软件在线调试正确,下载板子后,LED3仍未点亮,代码未大循环,如有后期有条件,最好使用硬件仿真在线调试,查找故障bug速度应该更快。
13.使用固件库编程优点:
a.无需直接操作寄存器,给寄存器一个个赋值操作,避免繁琐赋值,写代码效率低;
b.使用固件库编写的代码可读性非常好;
c.可移植性非常好。
- GPIO输出操作—使用固件库点亮LED--- 调试总结
- STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- [转载]STM32学习笔记——控制GPIO输出点亮LED灯(直接操作存储器)
- 第11章 GPIO输出-使用固件库点亮LED—零死角玩转STM32-F429系列
- STm32 使用 stm32cube GPIO 点亮 led 的
- TI CC2530基础实验(普通GPIO操作——点亮led灯)
- S3C6410的GPIO基本操作(点亮LED)
- stm8s开发(二) GPIO的使用:点亮LED!
- GPIO初始化及点亮LED
- soc 通过GPIO点亮LED
- CC2530学习笔记のGPIO配置——点亮LED
- 控制GPIO, 点亮led,实现跑马灯
- 6410寄存器控制GPIO点亮LED
- bananapi gpio点亮led小灯
- 树莓派 Learning 003 --- GPIO 001 --- 点亮LED
- GPIO-点亮一个LED(JZ2440-S3C2440)
- STM32-点亮LED灯(GPIO配置)
- stm8s: GPIO配置,点亮LED!PB4,PB5引脚LED点不亮
- java中写入xml文件内容的方法:DOM,Jdom,pull,Dom4j,Sax
- 算法分析:Product of Polynomials
- 2190: [SDOI2008]仪仗队
- 百度地图4.1_1开发教程(4)MarkerDrag
- SQL导出数据到TXT
- GPIO输出操作—使用固件库点亮LED--- 调试总结
- Android音频焦点处理相关的方法
- 行人检测论文阅读(2)
- Mac Sublime text3 for Nodejs Developer Environment Configation
- AfxBeginThread的介绍/基本用法和GetWindowTextA函数
- 学习python的第二天
- JSONP跨域的原理解析及其实现介绍
- 归并排序
- TXT导入数据到SQL