一个嵌入式工程师的Stm32开发日记
《STM32Cube高效开发教程》笔记

《STM32Cube高效开发教程》读书笔记目录一、前言 (2)1.1 书籍简介 (3)1.2 编写目的 (4)二、STM32Cube概述 (5)2.1 STM32Cube的意义 (6)2.2 STM32Cube的主要特点 (7)三、安装与配置 (9)3.1 STM32Cube的安装 (10)3.2 开发环境的配置 (11)四、创建项目 (12)4.1 新建项目 (13)4.2 项目设置 (14)五、HAL库介绍 (15)5.1 HAL库简介 (16)5.2 HAL库的主要组件 (18)六、STM32最小系统 (19)6.1 STM32最小系统的组成 (21)6.2 STM32最小系统的应用 (22)七、GPIO操作 (24)7.1 GPIO的基本概念 (25)7.2 GPIO的操作方法 (26)八、中断系统 (28)8.1 中断的基本概念 (29)8.2 中断的处理过程 (31)九、定时器 (33)9.1 定时器的功能介绍 (34)9.2 定时器的操作方法 (36)十五、文件系统 (37)一、前言随着科技的飞速发展,嵌入式系统已广泛应用于我们生活的方方面面,从智能手机到自动驾驶汽车,其重要性不言而喻。
而STM32作为一款广泛应用的微控制器系列,以其高性能、低功耗和丰富的外设资源赢得了广大开发者的青睐。
为了帮助开发者更好地掌握STM32系列微控制器的开发技巧,提升开发效率,我们特别推出了《STM32Cube 高效开发教程》。
本书以STM32Cube为核心,通过生动的实例和详细的讲解,全面介绍了STM32系列微控制器的开发过程。
无论是初学者还是有一定基础的开发者,都能从中找到适合自己的学习内容。
通过本书的学习,读者将能够更加深入地理解STM32的内部结构和工作原理,掌握其编程方法和调试技巧,从而更加高效地进行嵌入式系统的开发和应用。
在科技日新月异的今天,STM32系列微控制器将继续扮演着举足轻重的角色。
嵌入式stm32实训报告(一)

嵌入式stm32实训报告(一)实训背景•实训时间:2021年7月1日至2021年7月30日•实训地点:XX公司•实训内容:嵌入式STM32芯片原理及应用实训目的•学习嵌入式STM32芯片的原理和应用•掌握STM32平台搭建和开发工具的使用•熟练掌握STM32的编程语言和开发技巧•培养团队合作和解决问题的能力实训过程•第一周:嵌入式和STM32芯片的基本概念•第二周:STM32平台搭建、开发工具的使用和编程语言•第三周:STM32的应用场景及编程•第四周:团队合作项目实战和总结实训成果•掌握STM32芯片的原理和应用•熟练掌握STM32平台搭建和开发工具的使用•稳定掌握STM32的编程语言和开发技巧•培养了团队合作和解决问题的能力实训总结通过这次实训,我深刻认识到了学习嵌入式STM32芯片的重要性和必要性。
在实训过程中,我不断克服困难和问题,结合团队合作和解决问题的能力,成功完成了项目实战。
这次实训不仅让我找到了学习和工作的方向,也让我成长为一个更优秀和有价值的人才。
实训收获在这次实训中,我收获了很多:•学习了嵌入式STM32芯片的原理和应用,拓宽了自己的专业知识;•对STM32平台搭建和开发工具的使用有了更深入的了解,提高了自己的开发能力和效率;•掌握了STM32的编程语言和开发技巧,能够灵活应用于实际项目中;•培养了团队合作和解决问题的能力,良好的沟通和协作能力也在实践中得到了锤炼。
后续计划为了更好地应对未来的挑战,我制定了以下后续计划:•深入学习嵌入式系统的其他相关知识和技能,拓宽自己的技术广度和深度;•积极参加一些相关的技术交流和学习活动,与更多的同行进行学习和交流;•提高英语能力,更好地阅读和理解国外的技术文献和资源;•继续补充和积累项目实战经验,提高自己的实践能力。
总结通过这次实训,我得到了很多的收获,同时也清楚了自己未来的发展方向和重点。
嵌入式STM32芯片作为一个重要的应用方向,必将在未来的时代中得到越来越广泛的应用。
stm32实训报告经验总结

stm32实训报告经验总结STM32实训报告经验总结一、引言在这次STM32实训中,我深入了解了微控制器的基本原理和操作,学会了使用Keil MDK-ARM软件进行编程,掌握了STM32的GPIO、串口、定时器等基本外设的使用。
通过实际操作,我对于嵌入式系统设计和开发有了更深刻的理解。
二、实训过程1. 基础知识学习:首先,我通过阅读教材和网上资料,学习了微控制器的基本概念、STM32的体系结构和外设特性。
我了解到,STM32是一款功能强大的32位ARM Cortex-M核微控制器,具有丰富的外设接口和强大的处理能力。
2. 开发环境搭建:我按照教程安装了Keil MDK-ARM软件,配置了开发环境。
Keil软件提供了完整的开发工具链,包括代码编辑、编译链接、调试和仿真等功能。
3. 硬件平台搭建:我使用STM32开发板搭建了硬件平台。
我熟悉了开发板的电路原理图和引脚配置,了解了各个外设接口的使用方法。
4. 编程实践:在理解了基本概念和操作方法后,我开始进行编程实践。
我编写了GPIO输入输出、串口通信、定时器中断等程序,通过实际操作掌握了STM32的基本外设使用。
5. 调试与优化:在编程过程中,我遇到了许多问题,通过查阅资料和反复调试,最终解决了问题。
我还对程序进行了优化,提高了程序的效率和稳定性。
三、实训收获通过这次实训,我掌握了STM32微控制器的开发流程和基本外设的使用方法。
我学会了使用Keil MDK-ARM软件进行编程和调试,了解了嵌入式系统设计和开发的实际操作过程。
同时,我在实践中遇到了许多问题,通过解决问题,我提高了解决问题的能力。
四、展望未来这次实训让我对嵌入式系统设计和开发有了更深刻的理解。
在未来的学习和工作中,我将继续深入学习嵌入式系统的相关知识,掌握更多的技能和方法。
同时,我将尝试将所学知识应用到实际项目中,提高自己的实践能力和工程经验。
stm32学习经历(5篇可选)

stm32学习经历(5篇可选)第一篇:stm32学习经历随便写写,关于stm32 最近在学习stm32,写点东西,虽然简单,但都是原创啊开发板是前辈画的,好像是用来测试一个3G功能的,不过对于我来说太远;我要来了3个,自己焊了一个最小系统,好在公司资源还是不错的,器件芯片有,还可以问问前辈--对公司还是比较满意的,虽然工资少了点,但学东西第一位O(∩_∩)O~。
最开始当然是建工程了,这个真不太会,前前后后竟用了一周(时间真长,别见笑啊),上网查资料,问前辈,自己琢磨。
总算搞定,然后从GPIO开始学,开始还真没什么头绪(虽然在大学学点51,但完全没有真正应用,顶多是跑马灯实验),开始纠结是从寄存器开始学还是从库函数开始学,后来看到一句“用库函数入门,用寄存器提高”于是下定决心用库,但当时没有库的概念,结果走了很多弯路,看了很多不必要的东西,当时竟没理解到只是调用库就OK了,别的不用管。
最后潜心的在教程网看完一个例程后照猫画虎写了一个,经过了多次调试以后,灯终于亮了!那个兴奋啊。
再次还要感谢希望自己坚持下去,早日能写出一个属于自己的程序,完成一个说的过去的功能,下面把我的程序粘出来,和大家分享下,大虾看到了别见笑啊注:1.有两个灯,PA4 B12,都是低电平点亮2.有两个按键,PB8 和 PB9,按下是低电平3.程序开始后两个灯常亮,按下按键后熄灭,抬起后继续亮main.c中#include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_exti.h" void RCC_Configuration(void) //时钟配置函数{ ErrorStatus HSEStartUpStatus; //使能外部晶振RCC_HSEConfig(RCC_HSE_ON); //等待外部晶振稳定HSEStartUpStatus = RCC_WaitForHSEStartUp(); //如果外部晶振启动成功,则进行下一步操作if(HSEStartUpStatus==SUCCESS) { //设置HCLK(AHB时钟)=SYSCLK 将系统时钟进行分频后,作为AHB总线时钟RCC_HCLKConfig(RCC_SYSCLK_Div1); //PCLK1(APB1) = HCLK/2 将HCLK时钟2分频后给低速外部总线RCC_PCLK1Config(RCC_HCLK_Div2); //PCLK2(APB2) = HCLK HCLK时钟配置给高速外部总线 RCC_PCLK2Config(RCC_HCLK_Div1); //外部高速时钟HSE 4倍频RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_4); //启动PLL RCC_PLLCmd(ENABLE); //等待PLL稳定while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); //系统时钟SYSCLK来自PLL输出RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //切换时钟后等待系统时钟稳定 while(RCC_GetSYSCLKSource()!=0x08); } // 下面这些都是外设总线上所挂的外部设备时钟的配置RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_AP B2Periph_GPIOB|RCC_APB2Periph_AFIO, ENABLE); }void GPIO_Configuration(void) //GPIO配置函数{ //GPIO_DeInit(GPIOA); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU;GPIO_Init(GPIOB,&GPIO_InitStructure); } void EXTI_Config(void) { EXTI_InitTypeDef EXTI_InitStructure; // 管脚选择GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource8);GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource9); // 清除 EXTI线路挂起位EXTI_ClearITPendingBit(EXTI_Line8|EXTI_Line9); // EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; EXTI_InitStructure.EXTI_Line = EXTI_Line8|EXTI_Line9; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); } void NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; // 注意名称是“_IRQn”,不是“_IRQChannel”NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;// NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } int main(void) { RCC_Configuration(); GPIO_Configuration(); EXTI_Config(); NVIC_Config();while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_12); GPIO_ResetBits(GPIOA,GPIO_Pin_4); } } 中断文件 it.c中void EXTI9_5_IRQHandler(void) { if ( EXTI_GetITStatus(EXTI_Line8) != RESET ) { EXTI_ClearITPendingBit(EXTI_Line8);GPIO_SetBits(GPIOA,GPIO_Pin_4);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8)==0); } if ( EXTI_GetITStatus(EXTI_Line9) != RESET ){ EXTI_ClearITPendingBit(EXTI_Line9);GPIO_SetBits(GPIOB,GPIO_Pin_12);while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9)==0);勤劳的蜜蜂有糖吃} }第二篇:STM32入门经历,高手不要进!现在STM32初学入门,写些关于入门的帮助,也算答谢帮助过我的人.希望象我这样想学STM32的朋友不用迷茫.(本入门只适合低手,高手不要见笑).1.硬件平台.现在可以买到学习有的有英蓓特的MCBSTM32 和万利的EK-STM32F,可能目前出来最好的还是的神舟系列开发板,包括神舟I号(103RBT),神舟II号(103VCT),神舟III号(103ZET),神舟iv号(107VCT)几款都有,反正这几个板我都买了,学校出钱买的,还挺实惠,让老板打了个折扣,如果你自己开板做,成本还比这高.学会了才自己做自己的板子吧.2.软件平台.现在流行的有Keil MDK 3.15b和 IAR EWARM 4.42A. 购买评估板时,里面的光盘已经带了.为什么选这两个平台,用的人多,你以后遇到问题,可以找人解决的机会就大.英蓓特的MCBSTM32用的是Keil MDK 平台, 万利的是 IAR EWARM.3.C语言知识如果想补这推荐一本入门的书C Primer Plus 中文版.这本也是入门的好书.4.ST的数据手册STM32F10x参考手册看完这个就对STM32的内部有认识.STM32 Document and library rules 个人认为这个最重要.因为你学会了C语言看例程时.很多如GPIO_SetBits GPIO_ResetBits.很多C语言以外的函数库.这些都是STM32的库文件.5.看例程.如keil MDK 3.15b下的C:/Keil/ARM/Boards/Keil/MCBSTM32 有很多例程.GPIO口,RTC,PWM,USB,CAN等等....你想到的都有例程.6.多上论坛,呵呵.....有不明问下高手,我也是这样.只要不断努力,你一定会成功的.第三篇:STM32学习心得笔记STM32学习心得笔记时钟篇在STM32中,有五个时钟源,为HSI、HSE、LSI、LSE、PLL。
stm32h743开发实例

stm32h743开发实例现今,随着科技的不断发展,嵌入式系统在各个领域中发挥着越来越重要的作用。
作为一种集成了计算机处理器核、存储器、外设和通信模块等功能于一体的系统,嵌入式系统在汽车、智能家居、医疗设备等领域中得到广泛应用。
而在嵌入式系统中,微控制器作为系统的核心,起着至关重要的作用。
而在众多的微控制器中,STMicroelectronics的STM32系列可谓是备受瞩目。
自2007年推出以来,STM32系列一直受到广泛的关注与应用。
而在这个系列中,STM32H743系列作为STMicroelectronics最新推出的一款微控制器,拥有强大的性能和丰富的外设资源,广泛应用于高性能嵌入式应用中。
本文将深入探讨STM32H743微控制器的开发实例,旨在为广大嵌入式系统开发者提供有益的参考和指导。
# 一、STM32H743微控制器概述1.1 STM32H743系列特点STM32H743系列微控制器基于Arm Cortex-M7内核,主频可达480MHz,拥有高达4MB的Flash存储器和1MB的RAM,支持丰富的外设资源,包括各类通信接口、模拟外设外设等。
其性能强劲、低功耗等特点,使得其在高要求的嵌入式应用中具有得天独厚的优势。
1.2 STM32H743系列应用领域STM32H743系列微控制器广泛应用于工业控制、智能交通、智能电网、医疗设备等领域。
其高性能、稳定性和可靠性,使得其在这些领域中能够胜任复杂的任务和严苛的环境要求。
# 二、STM32H743开发环境搭建2.1 开发工具准备搭建STM32H743的开发环境首先需要准备相应的开发工具,包括开发板、编译工具、调试工具等。
推荐使用ST官方提供的CubeMX软件进行STM32固件库的配置生成,同时使用Keil或者IAR等工具进行代码编写和调试。
2.2 开发环境配置在搭建完硬件环境后,需要对软件开发环境进行配置。
通过CubeMX生成初始化代码,配置外设资源等,以便后续的应用开发和调试。
stm32 实验报告

stm32 实验报告STM32 实验报告一、引言STM32是一款由STMicroelectronics公司推出的32位单片机系列,具有高性能、低功耗和丰富的外设资源等特点。
本篇实验报告将介绍我在学习和实践STM32过程中的一些经验和成果。
二、实验目的本次实验的目的是通过使用STM32单片机,实现一个简单的温度监测系统。
通过该实验,我希望能够熟悉STM32的开发环境,掌握基本的硬件连接和编程方法,并能够成功运行一个简单的应用程序。
三、实验步骤1. 硬件连接:将STM32单片机与温度传感器、LCD显示屏等硬件设备连接起来。
确保连接正确,避免短路或接触不良的情况。
2. 开发环境搭建:下载并安装STM32CubeIDE,配置开发环境。
这是一个集成开发环境,支持STM32系列的开发和调试。
3. 编写代码:使用C语言编写一个简单的程序,实现温度传感器数据的读取和显示。
在编写代码过程中,需要熟悉STM32的寄存器和外设配置,以及相关的函数库。
4. 编译和烧录:将编写好的代码进行编译,生成可执行文件。
然后使用JTAG或SWD接口将可执行文件烧录到STM32单片机中。
5. 测试和调试:将STM32单片机连接到电源,观察LCD显示屏上是否正确显示当前的温度数值。
如果有错误或异常情况,需要进行调试和排查。
四、实验结果经过以上的实验步骤,我成功地实现了一个简单的温度监测系统。
在LCD显示屏上,我可以清晰地看到当前的温度数值,并且该数值能够实时更新。
通过与实际温度计的对比,我发现该系统的测量结果相当准确。
五、实验总结通过这次实验,我对STM32单片机的开发和应用有了更深入的了解。
我学会了如何搭建开发环境、编写代码、编译和烧录程序,并且成功实现了一个简单的应用。
在实验过程中,我也遇到了一些问题,但通过查阅资料和与同学的交流,我能够及时解决这些问题。
在今后的学习和实践中,我将进一步探索STM32单片机的功能和应用领域。
我希望能够深入研究更复杂的项目,并挖掘出更多的潜力。
嵌入式工程师的实习周记报告

嵌入式工程师实习周记报告实习第一周:本周是我作为一名嵌入式工程师实习的第一周。
刚来到公司,我对周围的环境和人感到十分陌生,心里有些许紧张和不适应。
但在项目经理的带领下,我逐渐熟悉了公司的基本情况和工作流程。
我了解到,嵌入式系统是将计算机硬件和软件紧密结合的一种技术,广泛应用于物联网、智能家居、工业控制等领域。
本周的主要任务是了解公司的项目情况和嵌入式系统的基本概念。
在项目经理的带领下,我参观了公司的研发部门,了解了公司的项目布局和发展方向。
同时,我还参加了一个嵌入式系统培训课程,学习了嵌入式系统的基本概念、硬件结构和软件开发流程。
通过这些学习,我对嵌入式系统有了更深入的了解,为接下来的实习工作打下了基础。
实习第二周:本周我开始参与到项目的实际开发中。
在项目经理的安排下,我加入了一个嵌入式项目团队,负责协助团队完成一个智能家居设备的嵌入式开发。
本周的主要任务是学习项目所使用的硬件平台和软件框架,并跟随团队成员一起完成项目的设计和开发。
在硬件方面,我了解了项目所使用的处理器、传感器、通信模块等硬件组件,并学会了如何使用示波器、逻辑分析仪等工具进行硬件调试。
在软件方面,我学习了项目所使用的嵌入式操作系统和开发框架,并掌握了基本的C语言编程和Makefile 配置。
通过本周的学习和实践,我对嵌入式项目的开发流程有了更深入的了解。
实习第三周:本周我开始独立负责项目的一部分任务。
在团队成员的帮助下,我完成了项目所需的硬件调试和软件开发。
在这个过程中,我遇到了一些问题,但通过查阅资料、请教同事和自主思考,我逐渐找到了解决方案,并成功完成了任务。
此外,我还参与了团队内部的技术分享会,学习了嵌入式系统在物联网应用中的实践经验和解决方案。
通过这些分享,我拓宽了技术视野,提高了自己的技术水平。
实习第四周:本周我完成了项目任务的开发,并协助团队成员进行项目的测试和优化。
在测试过程中,我发现了一些问题,并通过修改代码和调整参数,成功解决了这些问题。
STM32智能小车实习日志(一)

实习第一天,呼老师首先给我们开了一个会议,详细介绍了此次线上实习的安排和注意事项,会议结束,我便着手行动了。
由于当时时间仓促,智能车有缺乏的零部件,我们班展开讨论,将每个人缺少的零件都统计了下来,确保实习的顺利进行。
此外,我安装了MDK-Keil软件,新建了一个工程,毕竟很长时间不用这个软件,有些地方就忘了,学过的东西还是应时常复习。
最后,之前课设用到的下载器是J-link,本次用到的是ST-link,两者还是有一定差别的,综合来说,ST-link 性价比更好一些,下载所用线路少且价格便宜,稳定性也较好。
今天是实习第一天,希望通过本次实习能够对单片机及扩展设备有更加深刻的认识。
2021.01.05实习第二天,根据任务要求,开始画原理图。
我采用的软件为Altium Designer 2020,首先对其安装,安装完毕,开始按照视频学习该软件的基本内容,包括有如何新建工程、加载元件库及常用快捷键的使用。
接下来,开始进行项目所涉及元件分析、查线工作,元件包括有蓝牙模块(快递中)、寻迹模块、电机驱动模块、超声波模块和超声波云台(快递中)、STM32F103RCT6主板及机器人扩展板、直流减速电机等。
此外,已开始对STM32F103RCT6主板原理图进行绘制,希望可以顺利进行。
磨刀不误砍柴工,掌握绘图技巧,理解所要绘制原理图,实现线上实习价值最大化。
2021.01.06实习第三天,根据任务要求,继续绘制硬件原理图。
今天主要是对STM32F103RCT6主板部分、电源以及串口下载部分进行绘制,并对循迹模块进行了一定的学习。
由于黑色吸光,当红外发射管照射在黑色物体上时反射回来的光就较少,接收管接收到的红外光就较少,表现为电阻大,通过外接电路就可以读出检测的状态;同理,当照射在白色表面时发射的红外线就比较多,表现为接收管的电阻较小,此时通过外接电路就可以读出另外一种状态,如用电平的高低来描述上面两种现象就会出现高低电平之分,也就是会出现所谓的0和1两种状态,此时再将此送到单片机的I/O口,单片机就可以判断是黑白路面,进而完成相应的功能,如循迹、避障等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 勤于实践。我一直认为书上的东西是死的,看得再多,它还是在书上;别人的东西是别人的,别 人对你讲得再多,也依然是在他的嘴上。要想把知识变为自己的,最行之有效的方法就是实践。 所以师弟问我问题时,我总是会说,让程序再板子上跑一遍即可。所以各位读者,当你遇到问题 时,一定记得去 Try 一次,实实在在的在开发板上做一次,一切对错即明晰。引用邓小平的一句 话:实践是检验真理的唯一标准。
今天开始写第一篇技术日记,pcb 板也在今天画好了,所以给自己的标题是开始一段新旅程。 一般来说,每一个产品开发,每一个开发工程师,都有自己的调试环境和步骤。就我遇到的产品而言, 基本上有两种环境。(有时招聘面试官也会问起这个,嘻嘻)。 第一就是对于底层程序,也就是汇编程序,这类程序的调试必须借助 Jtag,因为 Jtag 可以单步调试啊, 进出循环啊。比如在移植操作系统的时候,如果调试器不支持单步,那真的是一件非常痛苦的事情(不排 除有些牛人不需要单步,呵呵)。 第二就是对于应用类的程序,也就是我们常用的 C 或者 C++,基本都是用串口(UART/UARST)输出 信息来调试板子。这类应用,因为底层基本都写好了,有操作系统啊,有 Bootloader 程序啊,底层是不会 出问题的。而且有现成的 printf 函数,用宏定义把各个模块包起来,需要的时候调用 printf 打印系统信息到 串口,就能够知道系统的运行流程和轨迹,基本上都能够解决问题。如果这种情况下用 Jtag 调单步,基本 能把人搞晕的。所以在一般的产品开发里,都是直接用编译器生成 bin 或者 hex 文件,烧到板卡里,看串口 信息进行调试。而我们生活中的很多产品,比如路由器啊,猫啊,数字设备啊,把外壳拆开,都能见到很 明显的串口引脚。 这里不得不提一下开发板的设计,在众多的开发板中,基本都能见到大大的串口和 max232 芯片,有些 板子还一口气接了两个。实际上,在公司里看见的产品,都不会接出的,产品直接接出 CPU(STM32)的 TX 和 RX 引脚,即 UART 引脚。而一般的程序员都有一个调试小板,就是把 TX 和 RX 转换成电脑的 TTL 电平,接到 PC 的串口,然后在 PC 的超级终端就能看到串口打印的信息。而现在,因为很多电脑主板和笔 记本已经不带串口了,因此酷学玩™系列产品附赠一个“USB To TTL”的模块,通过这个模块,连接开发 板上的 TX、RX 和 GND 到电脑的 USB 口,同样可以在串口软件上看到板卡的串口输出信息。此模块需要 安装驱动,驱动路径:产品光盘\开发环境\USB 转 TTL 驱动。 这本日记,不打算写成长篇累牍的教程,因为在我以前的学习经历中,很多时候,让你茅塞顿开的并 不是繁杂的文档,有时仅仅是过来人的一句话。所以我希望自己的日记更能从思维的角度,让一个初学者 看清楚每个模块到底是怎么回事。有时,事情就是那么简单!
我的学习方法总结起来,有几个核心思想,我先向大家解释一下这些核心思想,当然这些思想,不仅 可以用到嵌入式学习中,同样也可以用到生活学习工作的方方面面。
1. 做聪明的懒人。不记得是什么时候,我发现这个世界是懒人创造的。懒得走路,于是有人发明了 自行车;懒得干手工活,于是发明了机器;懒得洗衣服,于是发明了洗衣机。这个时候也许有朋 友想起自己床底下的臭袜子开始为我这段话自豪起来。但是我想告诉你的是,光做懒人没用,要 做聪明的懒人才行,懒得动手的人,一定勤于动脑。世界上所有的创造力都来源于解决困难和追 求享受两个因素。当你遇到问题时,你是否会静下来思考呢,是否会比较出各种解决方案的差异 呢。如果你生活中常常有这样的步骤,那么可以说你是个很乐趣的人。在我的学习路途中,我一 直做一个懒人。我从来不强迫自己去做不想做的事情,我只是引导自己走最简单的路。我从不记 各种繁琐的常用的知识点,因为我深信用多了自然能记住,于是手头总是有很多参考书,他们在 帮我记。有时我也懒得翻书,于是搜索引擎和网络成了我最好的朋友。有时连搜都懒得搜了,旁 边有高手,什么问题就都问他,既省事,问多了自己不好意思一不小心就记住了。
4. 勤于总结。人每天遇到的问题太多了,特别是学习者,然而人脑是有限的。所以我鼓励朋友们都 和我一样,能够时刻总结自己得到的。写在纸上也好,发到网上也好,刻5. 坚持到底。最重要的一点放到最后说,只有四个字,简单得不能再简单,却不是每个人都做得到。 从我真正想做一件事开始,我放弃的部分大于我坚持的部分,所以失败的部分多余成功的部分。 每每放弃,我总会为自己找到各种理由。这些理由看似坚不可摧,实际上是你给自己摆的障碍而
QXW /酷学玩™
你需要学什么
在我最开始学嵌入式的时候,对于一切知识如饥似渴,我总是担心自己接触到的知识面不够多,难以 对付实际应用。于是我日以继夜翻看从图书馆借来的书籍,省吃俭用存钱买开发板实践,学完一样马上迫 不及待的马上接触另一样。然而这些年来,我越发明白,一个人懂得越多,其不懂的东西就会更多。这种 对未知世界的恐慌是没办法战胜的,因为人的精力有限,并且我们需要这种恐慌给我们带来学习的动力。 但是,我们却可以克服这种恐慌给我们带来的负面影响,方法很简单,就是掌握行之有效的学习方法。
3. 善于引导自己。这个世界上的人有各种不同的兴趣爱好,我想这就是这个世界丰富多彩的原因。 每个人都会发现,做自己不情愿的事情时,效率很低。所以我鼓励我所有的朋友都从事自己感兴 趣的行业,这样的人生才会精彩。当然,有很多朋友已经上了另一条路,才发现自己真正喜欢的 事物。这时转身投入自己感兴趣的行业,一是怕丢了现在已经得到的导致终身遗憾,二是怕起步 太晚赶不上人家。我也有不少这样的朋友,其中有一个大学同学,是学建筑的,发现自己喜欢嵌 入式,我当时极力鼓励他搞自己感兴趣的东西,不要怕,要是怕就努力埋头去做,不给自己的后 悔留路。结果现在也才过去三四年时间,他已经在北京一家软件公司做开发工程师了,懂得东西 比我还多。所以我说,在人生的路上,你一定要明白什么是你最想要的,你要懂得如何引导自己 去走一条正确的路,这样的人生才会有意思。
更多详情请访问淘宝专营店 ,或登录官方网站 。 第 3 页
QXW /酷学玩™
已。到现在,我终于明白,成功的路有千万条,成功的法则有千万句,但是成功的本质只有一句
话,就是坚持到底。另外,教大家一个坚持的方法。当你做一件事情已经厌烦的时候,那就什么
开发板是没有一个让大家都满意的标准的,然而很多真正的嵌入式产品却有相似的标准,这就是我开 发酷学玩™的目的。TAOBAO 上卖的开发板,设计大多过于呆板,除了写些 Demo 程序尝尝新鲜感之外, 基本就没有其他用处了,完全没办法和真正的成熟嵌入式产品相提并论,而这样的板子,在使用者熟悉之 后也基本成了废弃物,丢入角落不闻不问。这些年我先后接触了多款产品,我试着把平时工作中遇到的成 熟产品理念带入到酷学玩™的设计中,所以我删去了很多累赘的接口,同时也试着把产品做小(当然不可 避免成本也在提高),加入锂电支持等等独特的设计,让酷学玩™即可以当做开发工具,也可以加个壳就变 成一款成熟产品(PDA、MP3、电子书、万年历、名片夹、小游戏机、手持示波器)。
事实上,在此之前,我并没有接触过 STM32 的开发工作,可以说此时的我对 STM32 的了解还不如读 者的多。然而因为之前在嵌入式这一行的经验,我相信在不久之后,我便可以迅速的在 STM32 上开发出我 想要的软件系统。而这得益于一直以来我引以为豪的学习方法和学习能力。这将是一段非常奇特的过程, 我将以一个成熟嵌入式软件工程师和一个 STM32 初学者的双重身份来和大家分享我的学习体验。我希望在 我写完这本日记或者说在读者读完这本书之后,读者不仅能够对我的学习思想有一个认知,同时也对读者 自身的学习思想进行一个总结,我相信这会对你以后的学习和工作大有裨益,这也是我写本书的目的。另 外,此日记请配合相应代码进行阅读,这样会让你学得更快。
同时,你若对酷学玩系列产品有任何意见和看法,请让我得知,一款产品的改进离不开使用者的反馈 和支持,在此表示感谢,联系邮箱:YuanYin1985@,联系 QQ:58081686。
袁崟 2010/03/11 晚
更多详情请访问淘宝专营店 ,或登录官方网站 。 第 2 页
都不想,麻木的去做,适应了这种麻木,成功就不远了。一句话,忍无可忍,就重新再忍。
更多详情请访问淘宝专营店 ,或登录官方网站 。 第 4 页
QXW /酷学玩™
日记
2010-3-23 阵雨 - 开始一段新旅程
QXW /酷学玩™
自序
我知道每个嵌入式学习者都有自己的梦想,当然我也有,每当我把自己的某些想法用嵌入式系统开发 成实物,我心里的愉悦和成就感是无法形容的,我想这就是一直以来我努力追求自己梦想的原动力吧。
从我接触嵌入式到现在快有四个年头了,在这四年学习嵌入式的过程中,我经历了很多挫折和失败, 而这些挫折和失败,却使我在这四年里迅速成长起来。我先后到过几家不同的公司任职,却苦于找不到一 个合适的成长环境;我也曾开发过各种项目,却苦于找不到人投资;我时刻提醒自己要努力的去学习和创 造,却苦于无法将自己的能力层次提高到一个的高度。一开始,我总是会把失败的原因归结到客观因素, 或者那些感觉无法改变的主观因素。例如生不逢时啊,性格如此之类。当经历了总总之后,我发现,与其 寂寞的等待曙光,不如张开翅膀去寻找光明,有时候,你开始走了,才会有路。
QXW /酷学玩™
一个嵌入式工程师的 STM32 开发日记
-- 酷学玩 Summer 板官方教程
文档版本 1.0 最后更新日期 2010-10-25
更多详情请访问淘宝专营店 ,或登录官方网站 。 第 1 页
更多详情请访问淘宝专营店 ,或登录官方网站 。 第 5 页