




已阅读5页,还剩55页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习 嵌入式系统定义 与通用计算机系统的区别以应用为中心 以计算机技术为基础 软硬件可裁剪 从而能够适应实际应用中对功能 可靠性 成本 体积 功耗和应用环境有特殊要求的专用计算机系统 嵌入式系统的组成嵌入式处理器 外围设备 操作系统 应用软件嵌入式处理器分类微控制器 微处理器 嵌入式DSP 片上系统 绪论 GPIO STM32的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 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 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 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 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外部中断例程讲解 注意 中断服务函数都包含在 stm32f10 x 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 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 ConfigureUSART1basicandasynchronousparamters USART Init USART1 STM32串口例程讲解 Name NVIC Configuration Deion ConfiguresNVICandVectorTablebaselocation Input None Output None Return None voidNVIC Configuration void NVIC InitTypeDefNVIC InitStructure NVIC PriorityGroupConfig NVIC PriorityGroup 0 NVIC InitStructure NVIC IRQChannel USART1 IRQn NVIC InitStructure NVIC IRQChannelPreemptionPriority 0 NVIC InitStructure NVIC IRQChannelSubPriority 0 NVIC InitStructure NVIC IRQChannelCmd ENABLE NVIC Init STM32串口例程讲解 voidUSART1 IRQHandler void if USART GetITStatus USART1 USART IT RXNE RESET 将数据回送至超级终端USART SendData USART1 USART ReceiveData USART1 等待数据发送完毕while USART GetFlagStatus USART1 USART FLAG TXE RESET 等待发送完成USART ClearFlag USART1 USART FLAG TXE 清零发送完成标志位 等待发送完成 USART ClearITPendingBit USART1 USART IT RXNE STM32串口例程讲解 直接存储器存取DMA 直接存储器存取 DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速的无需CPU干预的数据传输 把数据传输的任务交给DMA执行 CPU就可以去做别的事情了 提高了CPU的工作效率 Stm32有两个DMA控制器 其中DMA1有7个通道 DMA2有5个通道 每个通道专门用来管理来自于一个或多个外设对存储器访问的请求 DMA的通道不是随便使用的 有一个预先的分配 DMA通道和请求 DMA1的通道分配 DMA2的通道分配 intmain void RCC Configuration 系统时钟设置GPIO Configuration 端口初始化USART Config USART1 串口1初始化MYDMA Config DMA1 Channel4 u32 while 1 例程 串口1通过DMA进行数据的发送 voidRCC Configuration void SystemInit 系统时钟配置为72MHZ DMA编程例程 voidGPIO Configuration void GPIO InitTypeDefGPIO InitStructure RCC APB2PeriphClockCmd RCC APB2Periph GPIOA ENABLE A口时钟配置GPIO InitStructure GPIO Pin GPIO Pin 9 USART1TXGPIO InitStructure GPIO Mode GPIO Mode AF PP 复用推挽输出GPIO InitStructure GPIO Speed GPIO Speed 50MHz GPIO Init GPIOA A端口 DMA编程例程 voidUSART1 Config void USART InitTypeDefUSART InitStructure RCC APB2PeriphClockCmd RCC APB2Periph USART1 ENABLE 串口时钟使能USART InitStructure USART BaudRate 115200 速率115200USART InitStructure USART WordLength USART WordLength 8b 数据位8位USART InitStructure USART StopBits USART StopBits 1 停止位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 收发模式USART Init USART1 DMA编程例程 voidMYDMA Config DMA Channel TypeDef DMA CHx u32cpar u32cmar u16cndtr DMA InitTypeDefDMA InitStructure RCC AHBPeriphClockCmd RCC AHBPeriph DMA1 ENABLE EnableDMAclock DMA InitStructure DMA PeripheralBaseAddr cpar 外设基地址DMA InitStructure DMA MemoryBaseAddr cmar 内存基地址DMA InitStructure DMA DIR DMA DIR PeripheralDST 传送数据方向DMA InitStructure DMA BufferSize cndtr 传送数据的大小DMA InitStructure DMA PeripheralInc DMA PeripheralInc Disable 外设地址不变DMA InitStructure DMA MemoryInc DMA MemoryInc Enable 内存地址递增DMA InitStructure DMA PeripheralDataSize DMA PeripheralDataSize Byte 外设数据宽度DMA InitStructure DMA MemoryDataSize DMA MemoryDataSize Byte 内存数据宽度DMA InitStructure DMA Mode DMA Mode Normal 不循环DMA InitStructure DMA Priority DMA Priority High DMA通道的优先级DMA InitStructure DMA M2M DMA M2M Disable DMA Init DMA CHx DMA编程例程 30 AD模数模块 Analog to DigitalConverter 即模拟 数字转换器 主要功能是将连续变量的模拟信号转换为离散的数字信号 由于单片机只能处理数字信号 因此 在对外部的模拟信号进行分析 处理的过程中 必须使用ADC模块将外部的模拟信号转换成单片机所能处理的数字信号 ADC模数转换模块 31 可编辑 分辨率 A D转换器能分辨的最小模拟电压 例如 某款A D参考电压是5V 输出8位二进制数可以分辨的最小模拟电压为5V 2 8 20mV 而输出12位二进制数可以分辨的最小模拟电压为5V 2 12 1 22mV 输入模拟量与输出数字量之间的关系 STM32的ADC是12位逐次逼近型的模拟数字转换器 它有18个通道 可测量16个外部和2个内部信号源 温度传感器 内部参考电压 ADC模数转换模块 ADC编程步骤 1 开启PA口时钟和ADC1时钟 2 复位ADC1 同时设置ADC1分频因子 ADC时钟复位的方法是 ADC DeInit ADC1 分频因子要确保ADC1的时钟 ADCCLK 不要超过14Mhz 这个我们设置分频因子位6 时钟为72 6 12MHz 库函数的实现方法是 RCC ADCCLKConfig RCC PCLK2 Div6 3 初始化GPIO和ADC1参数 GPIO InitStructure GPIO Pin GPIO Pin 1 GPIO InitStructure GPIO Mode GPIO Mode AIN 模拟输入GPIO Init GPIOA 初始化GPIOA 1 ADC InitTypeDefADC InitStructure ADC InitStructure ADC Mode ADC Mode Independent ADC工作模式 独立模式ADC InitStructure ADC ScanConvMode DISABLE AD单通道模式ADC InitStructure ADC ContinuousConvMode DISABLE AD单次转换模式ADC InitStructure ADC ExternalTrigConv ADC ExternalTrigConv None 转换由软件而不是外部触发启动ADC InitStructure ADC DataAlign ADC DataAlign Right ADC数据右对齐ADC InitStructure ADC NbrOfChannel 1 顺序进行规则转换的ADC通道的数目1ADC Init ADC1 根据指定的参数初始化外设ADCx 4 使能ADC并校准 使能ADC的方法 ADC Cmd ADC1 ENABLE 使能指定的ADC1校准包括复位校准和AD校准执行复位校准的方法是 ADC ResetCalibration ADC1 while ADC GetResetCalibrationStatus ADC1 等待复位校准结束执行ADC校准的方法是 ADC StartCalibration ADC1 while ADC GetCalibrationStatus ADC1 等待AD校准结束 5 设置规则组的通道 启动A D 读取A D结果 我们这里是规则序列中的第1个转换 同时采样周期为239 5 所以设置为 ADC RegularChannelConfig ADC1 ch 1 ADC SampleTime 239Cycles5 软件开启ADC转换的方法 ADC SoftwareStartConvCmd ADC1 ENABLE 使能指定的ADC1的软件转换启动功能开启转换之后 就可以获取转换ADC转换结果数据 方法是 ADC GetConversionValue ADC1 DAC数模转换模块 名称 voidRCC Configuration void 功能 时钟配置 入口参数 无 出口参数 无 说明 调用方法 无 voidRCC Configuration void SystemInit 系统时钟配置 voidDAC Init void GPIO InitTypeDefGPIO InitStructure DAC InitTypeDefDAC InitType RCC APB2PeriphClockCmd RCC APB2Periph GPIOA ENABLE RCC APB1PeriphClockCmd RCC APB1Periph DAC ENABLE 外设时钟使能 GPIO的配置 GPIO InitStructure GPIO Pin GPIO Pin 4 GPIO InitStructure GPIO Mode GPIO Mode AIN GPIO Init GPIOA voidDAC1 Set Vol u16vol floattemp temp vol temp 1000 temp temp 4095 3 3 DAC SetChannel1Data DAC Align 12b R u16 temp intmain void RCC Configuration 系统时钟配置DAC Init DAC1 Set Vol 2000 while 1 计数器模式TIM2 TIM5可以由向上计数 向下计数 中央对齐模式 STM32定时器简介 向上计数模式 计数器从0计数到设定的数值 然后重新从0开始计数并且产生一个计数器溢出事件 这个事件也称为更新事件 向下计数模式 计数器从设定的数值开始向下计数到0 然后自动从设定的数值重新向下计数 并产生一个向下溢出事件 这个事件也称为更新事件 中央对齐模式 向上 向下计数 计数器从0开始计数到设定的数值 产生一个计数器溢出事件 然后向下计数到1并且产生一个计数器下溢事件 再从0开始重新计数 STM32定时器简介 1 RCC配置 voidRCC Configuration void SystemInit 系统时钟配置为72MHZRCC APB1PeriphClockCmd RCC APB1Periph TIM3 ENABLE 定时器3时钟使能RCC APB2PeriphClockCmd RCC APB2Periph GPIOG ENABLE 外设时钟使能 STM32定时器例程讲解 2 I O口线配置voidGPIO Config void GPIO InitTypeDefGPIO InitStructure GPIO InitStructure GPIO Pin GPIO Pin 11 选择第11个引脚GPIO InitStructure GPIO Mode GPIO Mode Out PP 配置为推挽输出模式GPIO InitStructure GPIO Speed GPIO Speed 50MHz 口线翻转速度最高为50MHzGPIO Init GPIOG STM32定时器例程讲解 3 定时器初始化voidTIM3 Init u16arr u16psc TIM TimeBaseInitTypeDefTIM3 TimeBaseStructure TIM3 TimeBaseStructure TIM Period arr 设置自动重装载寄存器的值 设置定时时间 TIM3 TimeBaseStructure TIM Prescaler psc 设置预分频器的分频值TIM3 TimeBaseStructure TIM CounterMode TIM CounterMode Up 计数器向上计数模式TIM3 TimeBaseStructure TIM ClockDivision 0 x0 设置时钟分割TIM TimeBaseInit TIM3 启动定时器3 STM32定时器例程讲解 4 NVIC初始化voidNVIC Configuration void NVIC InitTypeDefNVIC InitStructure NVIC PriorityGroupConfig NVIC PriorityGroup 0 中断优先级分组 0组 NVIC InitStructure NVIC IRQChannel TIM3 IRQn 选择定时器3中断NVIC InitStructure NVIC IRQChannelPreemptionPriority 0 设置抢占优先级的大小NVIC InitStructure NVIC IRQChannelSubPriority 0 设置从优先级的大小NVIC InitStructure NVIC IRQChannelCmd ENABLE 中断使能NVIC Init STM32定时器例程讲解 5 定时器中断voidTIM3 IRQHandler void staticu8flag 0 if TIM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论