一、意图
1、前些天,编写了开发板上键盘扫描、字符输入和简略shell的程序,该程序的编写是在曾经工程的基础上修正而成的,源代码的安排比较乱,也没有很好的注释。这两天,先把代码收拾一下,加上比较详细的注释,使得可读性、扩展性更好。
2、乘这个时机,也把程序里与STM32硬件相关的部分好好学习一下。
二、开发板装备剖析
1、PA口
PA0对应按键PB3,开发板右下角。PA1用于模仿电位器,JP1在这儿。PA2用定时器的PWM发生液晶的背光电源。PA4-PA7用于SPI形式操作SD卡。PA9,PA10用于串口0通讯。PA11,PA12是USB差分线。PA13、PA14、PA15是JTAG的三个脚。
PA3、PA8没用到。
2、PB口
PB0用于扬声器,PB2与JP4用于Boot1挑选。PB3和PB4是JTAG的别的两个脚。PB5操控绿色指示灯,在SD卡上面。PB6、PB7用于I2C的存储器。PB8、PB9用于CAN收发器。PB11-PB15用于摇杆按键。
PB1和PB10没有用到
3、PC口
PC0到PC7用于液晶的数据口,PB8-PB12别离用于读、写、指令数据挑选、复位和片选。PB13是PB2按键,在PB3左面。PB14-PB15外接32.768KHz晶振。
4、PD口
PD0-PD1外接12MHz晶振,PD2用于USB的衔接断开操控,低电平主机能检测到,高电平断开衔接,JP3可直接操控衔接。别的还有BOOT 0脚,形式受控于JB5。下面还有复位引脚。这儿5个脚加上上面48个,共53个引脚。
5、电源口
共11个脚,还有电池引脚。
到这儿,开发板的IO装备根本现已很明晰了。
三、初始化装备程序的编写
程序中选用ucos操作体系,在调用OS_Init()之前,先调用BSP_Config()进行开发板IO装备作业。下面是程序结构的源代码。
#include “stm32f10x_lib.h”
#include “bsp_config.h”
static GPIO_InitTypeDef GPIO_InitStructure;//进行GPIO端口设置的数据结构
static NVIC_InitTypeDef NVIC_InitStructure;
//进行中止设置的数据结构,前面的变量是用typedef在nvic的头文件中界说的。
void RCC_Config(void);
void NVIC_Config(void);
void SysTick_Config(void);
void GPIO_Config(void);
void TIM_Config(void);
void USART_Config(void);
void BSP_Config(void)
{
RCC_Config();//时钟装备
NVIC_Config();//中止向量装备,首要作业不在这儿做
SysTick_Config(); //体系时钟装备,用于usos的时钟
GPIO_Config();//通用IO口装备,复用端口独自装备
TIM_Config();//定时器装备
UART_Config( );//异步串行端口装备
}
以下便是这些详细装备函数的源代码,我会边修正边发出来。
有了这么一个程序结构后,关于不同的应用程序,软件的裁剪就比较便利。
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/chanpin/256501.html