完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
//题目:使用STM32的USART与PC进行数据通信,使用PC向STM32的USART发送一个字节,而后STM32将此数据传回给PC端,本程序算是成功了,但是有瑕疵
//问题1:..usermain.c(95): warning: #177-D: variable "USART_ClockInitStructure" was declared but never referenced //问题2:调试助手发送数据,但是调试助手窗口收不到数据,要关电源,再开启,调试助手窗口才收到数据 //问题3:..usermain.c(107): warning: #1-D: last line of file ends without a newline #include"stm32f10x_lib.h" /*自定义同义关键字 自定义参数宏 自定义函数宏 自定义变量 自定义函数声明*/ void RCC_Configuration(void); void GPIO_Configuration(void); void USART_Configuration(void); /*********************** *函数名 :main *输出参数:无 *函数描述 ;主函数 *返回值 ;无 输入参数 ;无 *************************/ int main(void) { vu16 i=0; RCC_Configuration();//设置系统时钟 GPIO_Configuration();//设置GPIO端口 USART_Configuration();//设置USART while(1) { /*等待USART1接收数据完毕*/ if(USART_GetFlagStatus(USART1,USART_IT_RXNE)==SET) { /*向串口发送接收到的数据*/ USART_SendData(USART1,USART_ReceiveData(USART1)); /*短暂延迟,保证首发稳定*/ for(i=0;i<500;i++); } } } /*********************************** *函数名 ;RCC_Configuration *输出结果;无 *函数描述 ;设置系统各部分时钟 *返回值 ;无 *输入参数 ;无 *********************************************/ void RCC_Configuration(void) { ErrorStatus HSEStartUpStatus; //定义枚举类型变量HSEStartUpStatus RCC_DeInit(); //复位系统时钟设置 RCC_HSEConfig(RCC_HSE_ON); //开启HSE HSEStartUpStatus = RCC_WaitForHSEStartUp(); //等待HSE起振并稳定 /*判断HSE起振是否成功,是则进入if()内部*/ if(HSEStartUpStatus==SUCCESS) { RCC_HCLKConfig(RCC_SYSCLK_Div1); //选择HCLK(AHB)时钟源为SYSCLK 1分频 RCC_PCLK2Config(RCC_HCLK_Div1); //选择PCLK2时钟源为HCLK(AHB)1分频 RCC_PCLK1Config(RCC_HCLK_Div2); //选择PCLK1时钟源为HCLK(AHB)2分频 FLASH_SetLatency(FLASH_Latency_2); //设置FLASH延时周期数为2 FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);// 使能Flash预取缓存 //选择PLL时钟源为HSE 1分频,倍频数为9,则PLL=8MHZ*9=72MHZ RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9); RCC_PLLCmd(ENABLE);/*使能PLL*/ while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY)==RESET);//等待PLL输出稳定 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); //选着SYSCLK时钟为PLL while(RCC_GetSYSCLKSource()!=0x08); } RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE); } /*************************************** *函数名 ;GPIO_C onfiguration *输出结果;无 *函数描述 ;设置各GPIO端口功能 *返回值 ;无 *输入参数 ;无 ********************/ void GPIO_Configuration(void) { GPIO_InitTypeDef GPIO_InitStructure; /*设置USART的TX脚(PA.9)为第二功能推挽输出模式*/ GPIO_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); /*设置USART1的RX脚PA.10为浮空输入脚*/ GPIO_InitStructure.GPIO_Pin=GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA,&GPIO_InitStructure); } /********************************** *函数名 ;USART_Configuration *输出结果;无 *函数描述 ;设置 USART1 *返回值 ;无 输入参数 ;无 *******************************/ void USART_Configuration(void) { /*定义USART初始化结构体 USART_ InitStructure*/ USART_InitTypeDef USART_InitStructure; /*定义USART初始化结构体USART_ClockInitStructure*/ USART_ClockInitTypeDef USART_ClockInitStructure; /*波特率为9600,8位数据长度,1个停止位,无校验禁用硬件流控制,禁止USART时钟*/ /*时钟极性低,在第二个边沿捕获数据,最后一位数据的时钟脉冲不重SCLK输出*/ 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; USART_Init(USART1,&USART_InitStructure); USART_Cmd(USART1,ENABLE); /*使能USART1*/ } |
|
相关推荐
4个回答
|
|
疯狂回帖 只为升级
|
|
|
|
问题一:声明了没有使用。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA,ENABLE);这个不是设置时钟了么?那个结构体干嘛的? 问题三:最后一行敲个回车就好 |
|
|
|
dfyang0219 发表于 2016-1-18 13:54 大神。。。我是新手,我也是在模仿书的程序的,然后下载板子再调试修改一下的,, 书是 STM32自学笔记 2012 第131页。 谢谢了 |
|
|
|
不错的文件,值得收藏
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1049 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1017 浏览 2 评论
2123 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1219 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1639 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 13:22 , Processed in 0.554197 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号