六大函数
1.初始化:USART_Init(USART1,&InitSturcture);
2.命令:USART_CMD(USART1,ENABLE);
3.中断和清中断: USART_ITConfig(USART1,USART_IT_TC,ENABLE);USART_ClearITPendingBit(UASAR1,USART_IT_TC);USART_GetITStatus(USART1,USART1_IT_TC);
4.状态获取:USART_GetFlagStatus(USART1,USART_FLAG_TC);
5.DMA命令: USART_DMACmd(USART1,USART_DMAReq_Tx,ENABLE);
6.发送和接收:USART_SendData(USART1,0XAA);uchar USART_ReceiveData(USART1);
三大结构体
1. 初始化结构体
- 速度:波特率
- 模式:收发
- 格式:数据长度,结束位,流控
2. 中断源
- 正常运行:TC,TXNE,RXE,IDLE
- 故障:四个故障
- 附加功能:两个附加功能中断
3. 状态源
- 同中断源
高级外设总线
1. APB1:低速36M,负责:
- 其他外设
2. APB2:高速72M,负责5个高速模块
- GPIO
- ADC
- 高级定时器TIM1,TIM8
- 高速通信USART1,SPI1
- 外部中断和模拟输入EXT1 AFIO
如何初始化和配置外设
1. 在函数一开始,申明一个结构体,如PPP_InitTypeDef PPPInitStructure;PPPInitStructure保存在本地的数据存储器中,可以用于初始化一个或多个外设。
2. 填充PPP_InitStructure,通过一个初始化参数的设置,我们可以把最基本的设置保存在一个结构体中,也可以单独设置。
3. 调用PPP_Init()进行初始化,PPP_Init(PPP, &PPP_InitStructure);
4. 然后调用命令函数,进行使能PPP_CMD
**注意**!
1. 进行初始化设置之前,先用RCC_AHBPeriphClockCmd()将时钟打开
2. PPP_DeInit()可以将参数进行复位
3. 只需要修改一项参数时,不需要全局进行重新设置
STM32_USART相关
- USART功能:同步单向,半双工单线,LIN,智能卡,IRDA,CTS/RTS
- 什么是NRZ标准(不归零):连续信号无分割。
- USART特性:4.5Mb
- 头文件函数:去初始化,初始化,数据传输,辅助功能(多处理器,LIN,半双工,智能卡,IRDA)DMA,中断和FLAG
- 终端源和状态源:通信TXE,TC,RXNE,IDLE 错误4位 ORE,NE,FE,PE 辅助CTS,LIN
- 中断和FLAG:5个函数,中断配置,获取状态,获取中断,清状态,清中断
GPIO的所有函数
- 初始化和去初始化:GPIO_DeInit,GPIO_AFIOdeInit,GPIO_Init,GPIO_StructInit
- 读写控制
1. 读:读输入和读输出,读一位或读八位,GPIO_ReadInputDataBit,GPIO_ReadInputData,GPIO_ReadOutputDataBit,GPIO_ReadOutputData;
2. 写,写0写1,和SET和RESET,锁定:GPIO_SetBit();GPIO_ResetBit,GPIO_Wirte() GPIO_WriteBit,GPIO_PinLockConfig
- 外部中断,重映射和事件输出配置:GPIO_EXITLineConfig,
#### 重映射功能
- GPIO_PinRemapConfig(GPIO_Remap_SPI1,ENABLE);
- 部分器件映射功能有FULLREMAP和partialRemap区分,只将一部分进行映射
#### 关于中断与事件
- GPIO_EXTILineConfig(GPIOA,GPIO_PIN_8);
- 可以用事件来作为控制AD转换的命令,增加系统的速度。
#### 外部中断的所有函数
- 初始化和去初始化:EXTI_INIT,EXTI_DEINIT,EXTI_STRUCTINIT
- 中断源和清中断: EXTI_ClearITPendingBit
- 状态:EXTI_GetITStatus
##### 三大结构体
- 初始化结构体:某条线,使能,中断模式,触发模式
- 中断:无
- 状态:无
#### GPIO的4种输入和4种输出
- AIN:模拟输入
- IN_FLOATING浮空输入
- IPD,IPU,上拉和下拉
- OUT_OD 开漏输出
- OUT_PP 推挽输出
- AF_OD,AF_PP,复用开漏和复用推挽
总结:
- AIN不解释
- 浮空输入,按键识别,读取高低电平
- 上拉和下拉不解释
- 推挽输出用于驱动更高电压,而AF功能用于片内的其他外设
附件:函数实现了DEBUG信息输出好GRBL的移植编译(未进行功能编译)
http://note.youdao.com/noteshare?id=8049100378e65bb60f1f77efc7ca86f7&sub=199FF33556854407AF7B15943BD3E13B