USART串口配置方法_第1页
USART串口配置方法_第2页
USART串口配置方法_第3页
USART串口配置方法_第4页
USART串口配置方法_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、串口的配置过程一配置串口用到的10 口:Rx浮空输入Tx复用推挽输出 注意:具体配置如下/GPI0A.9/10 用于串口通信/设定GPI0A.9(USART.Tx为复用推挽输出GPI0_InitStructure.GPI0_Pin=GPI0_Pin_9; GPI0_InitStructure.GPI0_Speed=GPI0_Speed_50MHz;GPI0_InitStructure.GPI0_Mode=GPI0_Mode_AF_PP; GPI0_Init(GPI0A,&GPI0_InitStructure);/ 设定GPIOA.10(USART.Rx为浮空输入GPI0_InitStructu

2、re.GPI0_Pin=GPI0_Pin_10; GPI0_InitStructure.GPI0_Speed=GPI0_Speed_50MHz;GPI0_InitStructure.GPI0_Mode=GPI0_Mode_IN_FL0ATING;GPI0_Init(GPI0A,&GPI0_InitStructure);这里使用哪个端口的哪二个引脚可以自己选择! !二配置USART,主要是 USART_InitTypeDef结构体下的几个成员 包括波特率,字节长,停止位,校验位,硬件流,接受发送等等 注意:具体配置如下void USART_Configuration(void)/ 定义USART

3、初始化结构体USART_InitTypeDef USART_InitStructure;/ 设置波特率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_InitS

4、tructure.USART_HardwareFlowControl USART_HardwareFlowControl_None;/ 设置工作方式为接受方式USART_InitStructure.USART_ModeUSART_Mode_Rx|USART_Mode_Tx;/ 初始化串行口USART_Init(USART1,&USART_InitStructure);/ 打开接收中断USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);/ 打开发送完中断USART_ITConfig(USART1,USART_IT_TC,ENABLE);/ 使能串行口USART

5、_Cmd(USART1,ENABLE);三使能串口中需要用到的中断这些中断如下 -USART_IT_CTS: CTS改变中断(对于UART4和UART5无法使用)USART_IT_LBD: LINUSART_IT_TXE:USART_IT_TC:USART_IT_RXNE:USART_IT_IDLE: IDLEUSART_IT_PE:- USART_IT_ERR:间隔侦测中断 发送寄存器空中断 发送完成中断 接收寄存器全满中断线性中断奇偶错误中断错误中断 ( 桢错误 , 噪声错误 , 超速错误注意:具体配置如下/ 打开接收中断USART_ITConfig(USART1,USART_IT_RXN

6、E,ENABLE);/ 打开发送完中断USART_ITConfig(USART1,USART_IT_TC,ENABLE);这里需要用到什么中断就调用函数开启哪个 四 使能串口注意:具体配置如下/ 使能串行口USART_Cmd(USARTx,ENABLE);五打开串口时钟 (有的工程把所有的需要开启的时钟, 放在一个文件里开启,这里自由选择, )注意:具体配置如下RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE)需要什么时钟就开启哪个时钟,还有一种办法就是用如下程序下面的配置用到哪个时钟就开启哪个时

7、钟:void RCC_Co nfiguratio n(void)ErrorStatus HSEStartUpStatus;/*将外设RCC寄存器重设为缺省值*/RCC_DeI nit();/*设置外部高速晶振(HSE */RCC_HSEConfig(RCC_HSE_ON); RCC_HSE_ON-HS!振打开(ON)/*等待HSE起振*/HSEStartUpStatus = RCC_WaitForHSEStartUp();if(HSEStartUpStatus = SUCCESS) /SUCCESS: HSE晶振稳定且就绪/* 设置AHB时钟(HCLK */RCC_HCLKCo nfig(RC

8、C_S YSCLK_Div1);RCC_SYSCLK_Div1-AHB寸钟二系统时钟/*设置高速APB时钟(PCLK2 */RCC_PCLK2Co nfig(RCC_HCLK_Div1); RCC_HCLK_Div1-APB2 时 钟 = HCLK , 最大 72MHz/*设置低速APB时钟(PCLK1 */RCC_PCLK1Config(RCC_HCLK_Div2); /RCC_HCLK_Div2-APB1 时钟 = HCLK / 2 , 最大 36MHz/*设置FLASH存储器延时时钟周期数*/FLASH_SetLatency(FLASH_Latency_2);/FLASH_Latency

9、_22延时周期/* 选择FLASH预取指缓存的模式*/FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);/ 预取指缓存使能/*设置PLL时钟源及倍频系数*/RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);/ PLL的输入时钟 二HSE时钟频率;RCC_PLLMul_9-PLl输入时钟x9/* 使能 PLL */RCC_PLLCmd(ENABLE);/*检查指定的RCC标志位(PLL准备好标志)设置与否*/while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)

10、 = RESET)/* 设置系统时钟( SYSCLK */RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);RCC_SYSCLKSource_PLLCLK选择 PLL作为系统时钟/* PLL 返回用作系统时钟的时钟源 */while(RCC_GetSYSCLKSource() != 0 x08)0 x08 : PLL作为系统时钟/ / 设置ADC的预分频器 RCC_ADCCLKConfig(RCC_PCLK2_Div4);/ 开启 APB2上的 GPIOA寸钟、GPIOB时钟、GPIOC时钟、GPIOD寸 钟、GPIOE勺时钟RCC_APB2PeriphClo

11、ckCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_ GPIOB|RCC_APB2Periph_GPIOC, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_ GPIOE|RCC_APB2Periph_GPIOF, ENABLE);/ 开启 APB2上 USART、1 ADC1 ADC2的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph _ADC1|RCC_APB2Periph_ADC2|RCC_APB

12、2Periph_ADC3, ENABLE);/开启AHB总线上的DMA的时钟RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);/开启APB2上的AFIO功能用于中断RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);/开启APB1总线上的TIM2的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);/ 开启APB1总线上的TIM3的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);/开

13、启APB1总线上的TIM4的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);/设置ADC勺预分频,保证ADC勺时钟不大于14MHz负责影响精度;在72MHZ的下,采用6分频。RCC_ADCCLKConfig(RCC_PCLK2_Div6);六配置NVIC:使能串口中断,同时要设置中断的优先级注意:具体配置如下/使能USART中断,0级先占优先级和0级次优先级NVIC_InitStructure.NVIC_IRQChannel=USART1_IRQn;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;NVIC_InitStructure.NVIC_IRQCha

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论