复习嵌入式系统定义;与通用计算机系统的区别以应用为中心、以计算机技术为基础,软硬件可裁剪,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗和应用环境有特殊要求的专用计算机系统。嵌入式系统的组成嵌入式处理器;外围设备;操作系统;应用软件嵌入式处理器分类微控制器;微处理器;嵌入式DSP;片上系统绪论GPIOSTM32的GPIO有多种工作模式:输入浮空;输入上拉;输入下拉;模拟输入;推挽输出;推挽复用;开漏输出;开漏复用。要知道每种模式具体用在什么场合。GPIO的编程(可能有大题(编程题))用某个IO引脚控制一个LED灯,使其闪烁。要求画出电路图,并编程。STM32编写程序时要用到哪个模块首先要开启那个模块的时钟voidRCC_Configuration(void){SystemInit();//系统时钟配置为72MHZRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE);//打开GPIO时钟}STM32GPIO例程讲解voidGPIO_Configuration(void)//I/O口线配置{GPIO_InitTypeDefGPIO_InitStructure;//配置输出脚PC0控制LED灯GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);}STM32GPIO例程讲解写0:GPIO_ResetBits(GPIOB,GPIO_Pin_5);写1:GPIO_SetBits(GPIOB,GPIO_Pin_5);读:GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_5);返回值是1(Bit_SET)或者0(Bit_RESET);STM32GPIO例程讲解EXTI(外部中断)中断的定义CPU在正常执行程序的过程中,突然发生了一些需要紧急处理的事件,这些事件通过某种方式触发引起CPU暂停当前正在执行的程序,转去处理突发事件,待突发事件处理完毕后,CPU再返回继续执行刚刚被暂停的程序的过程就称之为中断。STM32中断优先级分组优先级越高,数值越低!抢占优先级相同的任务,响应优先级高的先响应,但不能互相抢占;抢占优先级不同的,可以抢占低优先级的CPU。STM32外部中断的来源STM32和I/O口有关的中断一共有16个:GPIO的管脚GPIOx.0~GPIOx.15(x=A,B,C,D,E,F,G)分别对应中断线15~0。这样每个中断线对应了最多7个IO口,以线0为例:它对应了GPIOA.0、GPIOB.0、GPIOC.0、GPIOD.0、GPIOE.0、GPIOF.0、GPIOG.0。而中断线每次只能连接到1个IO口上,这样就需要通过配置来决定对应的中断线配置到哪个GPIO上了。voidRCC_Configuration(void){SystemInit();//系统时钟配置为72MHZRCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打开AFIO时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOE|RCC_APB2Periph_GPIOF|RCC_APB2Periph_GPIOG,ENABLE);//打开GPIO时钟}STM32外部中断例程讲解voidGPIO_Configuration(void)//输入输出管脚配置{GPIO_InitTypeDefGPIO_InitStructure;//配置输出脚PC0控制LED灯GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_InitStructure);//配置输入脚PA0控制按键GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);}STM32外部中断例程讲解voidNVIC_Configuration(void)//嵌套向量中断控制器配置{NVIC_InitTypeDefNVIC_InitStructure;NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//选择优先级组别NVIC_InitStructure.NVIC_IRQChannel=EXTI0_IRQn;//选择中断通道:EXTI线0中断,因为按键连接的是PA0脚NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;//0级抢占式优先级NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;//0级副优先级NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//使能引脚作为中断源NVIC_Init(&NVIC_InitStructure);//调用NVIC_Init固件库函数进行设置}STM32外部中断例程讲解voidEXTI_Configuration(void){//调用固件库中的GPIO_EXTILineConfig函数,//其中两个参数分别是中断口和中断口对应的引脚号GPIO_EXTILineConfig(GPIO_PortSourceGPIOA,GPIO_PinSource0);EXTI_InitStructure.EXTI_Line=EXTI_Line0;//将中断映射到中断/事件源Line0EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;//中断模式EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling//设置为下降沿中断EXTI_InitStructure.EXTI_LineCmd=ENABLE;//中断使能,即开中断EXTI_Init(&EXTI_InitStructure);//调用EXTI_Init固件库函数,将结构体写入EXTI相关寄存器中}STM32外部中断例程讲解voidEXTI0_IRQHandler(void){if(EXTI_GetITStatus(EXTI_Line0)!=RESET){//将LED1的状态反转GPIO_WriteBit(GPIOC,GPIO_Pin_0,(BitAction)((1-GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_0))));//清中断EXTI_ClearITPendingBit(EXTI_Line0);}}STM32外部中断例程讲解注意:中断服务函数都包含在“stm32f10x_it.c”文件中,用的时候只需添加指令即可!串行通信基础数据通信方式:并行通信与串行通信并行通信:一次传输多位的数据特点:速度快,适合近距离传输串行通信:数据一位一位地发送特点:硬件简单,占用I/O口资源少,适合距离远,速度要求不高的场合波特率单位时间内传送的信息量。以每秒传送的位为单位:电传机:10字符/秒,1个字符11位,波特率为:10×11=110(波特)voidRCC_Configuration(void){SystemInit();//系统时钟配置为72MHZRCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);//外设时钟配置}STM32串口例程讲解/********************************************************************************Name:UART1_GPIO_Configuration*Deion:Configurestheuart1GPIOports.*Input:None*Output:None*Return:None*******************************************************************************/voidUART1_GPIO_Configuration(void){GPIO_InitTypeDefGPIO_InitStructure;//ConfigureUSART1_Txasalternatepush-pullGPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;GPIO_Init(GPIOA,&GPIO_InitStructure);//ConfigureUSART1_RxasinputfloatingGPIO_InitStructure.GPIO_Pin=GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOA,&GPIO_InitStructure);}STM32串口例程讲解/********************************************************************************Name:UART1_Configuration*******************************************************************************/voidUSART_Configuration(void){USART_InitTypeDefUSART_InitStructure;/*ConfiguretheUSART1synchronousparamters*/USART_InitStructure.USART_BaudRate=9600;USART_InitStructure.USART_WordLength=USART_WordLength_8b;USART_InitStructure.USART_StopBits=USART_StopBits_1;USART_InitStructure.USART_Parity=USART_Parity_No;USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;USART_InitStructure.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;/*ConfigureUSART1basicandasyn