将所有的函数都堆在main.c文件里不是好的选择,庞大的代码文件会是你维护的障碍,明智的做法是,一种功能封装到一个库文件里. 库文件就是你代码开始部分写的#include<xxxx.h>里面的xxxx.h,让我们打开stdio.h文件看一看里面具体有什么内容. /* Copyright (c) 2002, 2005, 2007 Joerg Wunsch All rights reserved. Portions of documentation Copyright (c) 1990, 1991…
本文中,笔者将介绍使用嵌入式开发工具Keil uVision5,使用C语言,对微处理器STM32F103C8进行嵌入式开发. 开发使用C语言,首先需要新建一个C语言文件,将其设为主函数的入口,因此,将此文件命名为main.c 配置好软硬件依赖环境后,在此文件中键入如下内容,尝试编译,如果能够编译成功说明环境配置成功. stm32f10x.h库的功能是提供对于stm32f10x系列开发板的所有功能的定义与实现,因此在头文件中要加一句. #include <stdio.h> #include &l…
下面我们进行几个串口通信的实际应用. 实验一:发信实验,让开发板通过串口向电脑发送信息: #include <stdio.h> #include <stm32f10x.h> #include <led.h> #include <button.h> #include <systick.h> #include <time.h> #include <usart.h> int main() { NVIC_PriorityGroup…
本文我们将了解STM32与外部设备通过串口通信的方式. 所谓串口通信,其实是一个类似于计算机网络的概念,它有物理层,比如规定用什么线通信,几伏特算高电平,几伏特算低电平.传输层,通信前要发RTS,CTS.每一层都有不同的协议所约束.在STM32中采用的USART就是其中之一. USART模块由GPIO_InitTypeDef结构体控制,它的定义如下 typedef struct { u32 USART_BaudRate; // 波特率 u16 USART_WordLength; // 字长 u1…
我们过去了解了用循环实现延时,或用系统滴答计时器实现延时,但这两种方法都有一种问题:会阻塞处理器的运行.下面我们学习一种不阻塞处理器运行其他事件的功能:时钟中断. 所谓中断,就是让处理器放下手头的事情,立刻去做一件事情,做完了再做原来的事情.比如说你在写作业,但是突然来了一个人找你说话,你就停下来跟他说话,这就是中断. 要实现时钟中断,我们必须了解两种特性:通用定时器和中断控制器. 通用定时器也是通过晶体产生脉冲信号用于定时的定时器,和滴答计时器(systick)的区别是通用定时器在外设上,滴答…
前面我们讲过,因为在STM32上没有系统时间的接口,因此无法调用sleep函数,在本文中,笔者将利用滴答计时器实现精准延时. 查阅技术手册,滴答计时器依赖于一个SysTick_Type类型寄存器,定义如下 typedef struct { vu32 CTRL; vu32 LOAD; vu32 VAL; vuc32 CALIB; } SysTick_TypeDef; 四个成员分别意义是控制和状态,重装载值,当前值,校准值. 滴答计时器的原理很简单,就是利用系统时钟信号,每接到一个时钟信号计数器加一…
按键和小灯一样,也是通过GPIO外设与主板连接,也是通过GPIO_InitStruct类型结构体控制其工作. 查阅技术手册,按钮连接GPIOA控制下的管脚0. 但与之不同的是,按键是一种输入设备,输入设备的工作状态也有四类,模拟输入,浮空输入,下拉输入和上拉输入. 模拟输入就是输入一个波形,浮空输入指的是未按下按钮时,不确定此管脚的信号状态. 上拉输入指按下按钮时,输出低电平,即0,松开按钮时,输出高电平,即1. 下拉输入则相反. 但是因为STM32的构造问题,按钮只能采用上拉输入,如果将此管脚…
1.简述 1.1 开发环境 该笔记所基于的开发环境为:windows8.python2.7.5.psycopg2-2.4.2.django1.5.4.pyCharm-2.7.3.以上所描述的软件.插件安装.破解等可以参考之前的python笔记,提供了具体的资源链接和操作步骤. 1.2 django学习笔记简介 django学习基于官网提供的投票应用,是学习该应用编写过程中,遇到的问题.知识点.注意问题等的总结,同时包含大量学习过程中的截图,方便大家更直观的学习. 它将包含两部分: 一个公共网站,…
软件开发过程(process) 是一个将用户需求转化为软件系统所需要的活动的集合. 软件生命周期(SDLC,Software Devlopment Life Cycle) 软件从孕育.诞生.成长.成熟.衰亡等阶段称为软件生命周期. 早期系统开发的生命周期以结构化的方法具体分成了六个阶段:问题的定义及规划.需求分析.软件设计.程序编码.软件测试.运行维护. 而随着面向对象方法和统一软件开发过程(RUP)方法论的提出,出现统一过程的生命周期,在统一过程中以迭代的方式重复一些列组成系统生命周期的循环,…
1.CAD对象:一个CAD文件(DWG文件)即对应一个数据库,数据库中的所有组成部分,看的见(包括点.多段线.文字.圆等)和看不见(图层.线型.颜色等)的都是对象,数据库本身也是一个对象. 直线.圆弧.文字和标注等图形对象都是对象. 线型与标注样式等样式设置都是对象. 图层.编组和块等组织结构都是对象. 视图与视口等图形显示都是对象. 甚至图形和 AutoCAD 应用程序本身也是对象. 2.CAD中的容器:对于任何一个DWG文件,都会创建下列容器对像:九个固定的符号表(如下)和有名对像字典(包含…