SW笨笨的STM32学习笔记之十七——雄关漫道真如铁,如今迈步从头越
发布: 2010-2-13 23:21 | 作者: sw笨笨 | 来源: StmFans思蜕盟 OPELC 自由电子联盟
一、前言
放下半年,继续STM32的学习。新的学习新起点,决心升级。单片机不换,
调试环境整体升级。包括以下几个方面:
1、调试器换JlinkV7,相比STlink在IAR环境下不用装驱动。虽说V8已经
面世但是针对我的应用V7已经足够。况且手里这个还是带串口的,用起来很方
便。
2、接口换用SWD,四线调试,节省接插件面积为以后电路板的小型化做好准
备。
3、开发板换豆皮,功能比较全面,有MP3和液晶屏幕的扩展板,价格便宜。
4、调试环境换IAR5.3,大势所趋,没办法新的3.0库已经不再支持IAR4
了。
5、固件库换3.0,经过半年发展应该比较完善了,全新的架构。
有了这些更新,等于一切从头开始。在学习过程中还是坚持以下几点原则不
变:
1、坚持做笔记,因为工作杂,以备忘记。
2、尽量脱离中文文档,使用英文原版文档做参考。
3、坚持基础功夫做扎实,高端技巧不去问津。
4、学习使用硬件模拟调试程序,以后可以脱离调试器编程,不用携带一大
堆装备。
5、构建自己的程序库和多文件结构的程序架构。
6、坚持原创,以例程为基础,参考手册为主要资料,构建自己的语句架构。
7、坚持逐句注释,还是以备忘记。
另外经过这一年的了解,对自己未来的应用有所清晰。所以对单片机的学习
目标进行精简,主要包括如下项目:
1、基本功能和数字接口功能以虚拟硬件调试为主
2、继承以前所写的所有基本模块和功能模块
3、串口烧写,程序加密
4、忽略外置RTC振荡器,但是设置使用内部时钟和外部独立供电替代RTC
晶体进行非精确的计时应用。
5、IO功能以控制LED和进行外部中断为主,主要使用JTAG节省下来的那几
个。
6、AD主要做超低频信号的处理
7、PWM只使用最简单的300Hz以内等周期变占空比正脉宽发出功能。
8、学习I2C多设备应用,CPU为master。
9、SPI的低速基本数据通信应用,和读写SD卡。
10、多串口USART通信基本数据通讯方式,数据校验,扩展功能全部舍去。
11、了解CAN总线,掌握基本应用。
12、不考虑LCD控制,只学习SPI口进行LCD控制。
13、详细掌握优先级设定的多任务应用
——SW笨笨,2010年春节假期
放下半年,继续STM32的学习。新的学习新起点,决心升级。单片机不换,
调试环境整体升级。包括以下几个方面:
1、调试器换JlinkV7,相比STlink在IAR环境下不用装驱动。虽说V8已经
面世但是针对我的应用V7已经足够。况且手里这个还是带串口的,用起来很方
便。
2、接口换用SWD,四线调试,节省接插件面积为以后电路板的小型化做好准
备。
3、开发板换豆皮,功能比较全面,有MP3和液晶屏幕的扩展板,价格便宜。
4、调试环境换IAR5.3,大势所趋,没办法新的3.0库已经不再支持IAR4
了。
5、固件库换3.0,经过半年发展应该比较完善了,全新的架构。
有了这些更新,等于一切从头开始。在学习过程中还是坚持以下几点原则不
变:
1、坚持做笔记,因为工作杂,以备忘记。
2、尽量脱离中文文档,使用英文原版文档做参考。
3、坚持基础功夫做扎实,高端技巧不去问津。
4、学习使用硬件模拟调试程序,以后可以脱离调试器编程,不用携带一大
堆装备。
5、构建自己的程序库和多文件结构的程序架构。
6、坚持原创,以例程为基础,参考手册为主要资料,构建自己的语句架构。
7、坚持逐句注释,还是以备忘记。
另外经过这一年的了解,对自己未来的应用有所清晰。所以对单片机的学习
目标进行精简,主要包括如下项目:
1、基本功能和数字接口功能以虚拟硬件调试为主
2、继承以前所写的所有基本模块和功能模块
3、串口烧写,程序加密
4、忽略外置RTC振荡器,但是设置使用内部时钟和外部独立供电替代RTC
晶体进行非精确的计时应用。
5、IO功能以控制LED和进行外部中断为主,主要使用JTAG节省下来的那几
个。
6、AD主要做超低频信号的处理
7、PWM只使用最简单的300Hz以内等周期变占空比正脉宽发出功能。
8、学习I2C多设备应用,CPU为master。
9、SPI的低速基本数据通信应用,和读写SD卡。
10、多串口USART通信基本数据通讯方式,数据校验,扩展功能全部舍去。
11、了解CAN总线,掌握基本应用。
12、不考虑LCD控制,只学习SPI口进行LCD控制。
13、详细掌握优先级设定的多任务应用
——SW笨笨,2010年春节假期

二、STM32开发学习环境
1、开发板
来了才发现豆皮已经下架了,我把资料整理一下,看着方便。
STMFASN出品的入门级 STM32开发套件(豆皮2.2)
功能描述:
2个RS232,1个B型USB,1个CAN,1个SD卡座,1个I2C,1路电位器输
入模拟信号,5个按键,1个扬声器,1个RTC,8个LED,1个RS485。
仿真接口:标准20针JTAG口,用于下载与调试
原理图:
图片1.png
图片2.png
豆皮开发板上面的跳线说明:
(A)此处为 LCD 的设置,和模块扩展。
R132 和 R115 是留给用户自己根据不同的 LCD 模块调节对比度。
R132 位置的上面的一排电阻位置是留给用户自己焊接液晶模块数据线和控制线上的上拉电阻。
(B)此处为选择板载 LED 模块或者扩展板外扩展模块之用,用短路片短接上为选择板载 LED 模块。注意:LED1 为 JTAG 复用 IO。
(C)此处为选择板载按键模块或者扩展板外扩展模块之用,用短路片短接上为选择板载按键模块。
(D)此处为选择供给 LCD 模块是 5V 还是 3.3V,根据客户选择的 LCD 模块的电源参数自行选择。"0" 为 5V 供电;"+" 为 3.3V 供电。
(E)端子J5 处为 USB 模式选择,"+" 为电脑识别模式。"0" 为 CPU 自己控制模式。
CON8 为 CAN 的终端电阻,短接为选择 120 欧姆终端电阻。
CON37 为 CAN 的 RS 是上拉还是下拉的选择,"+" 为上拉,"0" 为下拉。
(F)端子 CON13 处为 CAN 的接线端子的引脚 4 处是否连接到板上的GND。(G)POWER 为电源的模式选择,"+" 为 USB 供电模式。"0" 为 DC 5V 供电模式。
(H)DC 电源供电口,DC 电源规格:4.7V -- 5.2V DC , Min: 200mA 。
(I)电源 LED 跳线。
(J)此处为选择板载蜂鸣器模块或者扩展板外扩展模块之用,用短路片短接上为选择板载蜂鸣器模块。
(BOOT)为 CPU 的运行模式选择。
BOOT0为CPU处于ISP状态,还是正常的程序模式。连接到GND为处于正常程序模式,连接到 3.3V 为处于 ISP 模式。
注意:
当CPU进去JTAG仿真状态时无视BOOT0和BOO1的状态。即仿真时无所谓 BOOT1的状态。
由于板子的LED1和JTAG复用,当配置为GPIO做LED1的试验后,可能会无法进去仿真状态,请将BOOT0选择为3.3V才可继续仿真,或者可用串口或USB进行ISP,将LED1恢复为JTAG模式。
以上跳线位置如下图:
注:
该图为使用图片自行制作,官方未提供。
跳线G位置在电路板上被错误的写成跳线A。
我买到的板子,供电的1117芯片用错,自行换掉后供电正常。
图片3.jpg
注:
所有LCD控制由于不用全部作为未用资源。
此表格自行整理,是根据自己的使用情况整理的。
资源 名称及功能序号 管脚 备注
板载资源
AD ADC12_IN0 23
485控制 PA1 24
RS485 USART2 25、26
SD卡 SPI1 29、30、31、32
SD_VDD PE6 5
RS232 USART3 47、48
RS232 USART1 68、69
按键1、2、3、4 PC8、PC7、PC6、PC9 65、64、63、66
按键5 PD7 88
USB控制 PA8 67
USB USB 70、71
LED2、3、4 PC11、PC10、PC12 79、78、80
LED 5、6、7、8PD2~PD5 83~86
CAN CAN(Remap) 81、82
I2C I2C1 92、93
扬声器 TIM4_CH4 96
CPU运行需要的资源
电源 11、22 VDDA、28、50、75、100
GND 10、19VSSA、27、49、74、99
比较电压 21 VREF+(2.5V高精度)、20VREF-(接地)
VBAT 6
RTC晶振 8、9
晶振 12、13
RESET 14
BOOT1 37
BOOT0 94
JTAG 72、76、77、89、90
被引出但未用资源
1、2、3、4、15、16、17、18、33、34、38~46、55~62、87、97、98
TAMPER 7
ADC12(89)、TIM3(34) 35、36
SPI2、 51~54
PB5、PB8 91、95
无法使用的资源
73
注:
所有LCD控制由于不用全部作为未用资源。
此表格自行整理,是根据自己的使用情况整理的。
图片4.png
EmbeddedWorkbench forARM5.4是IARSystems公司为ARM微处理器开
发的一个集成开发环境(下面简称IAREWARM)。比较其他的ARM开发环境,IAR
EWARM 具有入门容易、使用方便和代码紧凑等特点,这是官方正式版,非评估版
本。
IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for
ARM version5.4。EWARM中包含一个全软件的模拟程序(simulator)。用户不需
要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。
从中可以了解和评估IAREWARM的功能和使用方法。
IAREWARM的主要特点如下:
1、高度优化的IAR ARMC/C++Compiler
2、IARARMAssembler
3、一个通用的IAR XLINKLinker
4、IARXAR和XLIB 建库程序和IARDLIBC/C++运行库
5、功能强大的编辑器
6、项目管理器
7、命令行实用程序
8、IARC-SPY调试器(先进的高级语言调试器)
SWD调试接口使用JTAG口的1、7、9、20脚分别联接3.3V、PA13/JTMS/SWDIO、
PA14/JTCK/SWDCLK、GND。只用这四根线即可完成调试过程。节省插针,减小接
插件和电路板面积。
stm32的最新的固件库V3.12,是固件库结构的一次大的改进。支持新发布
的各种cortex-3m内核的stm32处理器-stm32。采用全新标准化结构,对于我的
主要变化就是得重新学习。
JLink+USB转串口2合1特点:
(1)具备J-LINKV7全部功能,与上一版本V6.0相比,对于Cortex-M3的Serial
Wire Viewer(SWV)速度是V6的12倍,支持ARM11。
(2)增加USB转串口功能:JLinkv7+USB转串口可以同时使用,体积更小,只
有原版JLink的一半。
(3)有2个JTAG接口:10pin和20pin,带3条JTAG转接线:2.0间距10pin、2.0
间距20pin、2.0间距转2.54间距20pin,适用于各种JTAG插座。
最新的JlinkV8与所用JlinkV7的区别如下:
(1)SWD硬件接口支持1.2-5.0V的目标板,V7.0只能支持3.3V的目标板。
(2)V8.0使用双色LED可以指示更多的工作状态,V7.0只有1个LED指示灯。
(3)优化了固件结构,将固件升级功能移到bootloader区,使应用程序区扩大
一倍,便于增加新的功能。
以后可以进行的功能扩展:
打开壳体,将USB的+5V供电跟JTAG20针的第二脚Vsupply飞线,提供目标
板5V500mA的供电。
图片5.jpg