找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1859|回复: 0
收起左侧

STM32F4串口通信学习资料(含PPT+例程)

[复制链接]
ID:382624 发表于 2019-12-31 00:26 | 显示全部楼层 |阅读模式
ppt内容预览:
0.jpg 51hei.png 51hei.png 51hei.png 51hei.png
STM32F4单片机源程序如下:
  1. #include "stm32f4xx.h"
  2. //#include "led.h"
  3. //#include "delay.h"
  4. void delay1(int n);
  5. void delay_init(void);
  6. void delay_ms(u16 nms);
  7. void LED_Init(void);
  8. void sysclock_init(void);
  9. void uart_init(void);
  10. void USART1_IRQHandler(void);
  11. // void  Adc_Init(void);
  12. // u16 Get_Adc(u8 ch)   ;
  13. // u16 Get_Adc_Average(u8 ch,u8 times);



  14. int main(void)
  15. {
  16.         
  17. //        u16 adcx;
  18. //        float temp;
  19. //delay_init(168);
  20.         sysclock_init();
  21. LED_Init();
  22. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//???????????2
  23.         uart_init();        //?????????115200
  24. // Adc_Init();         //???ADC
  25.         while(1){
  26.                 GPIO_SetBits(GPIOC,GPIO_Pin_2);
  27.                         GPIO_ResetBits(GPIOF,GPIO_Pin_7);        
  28.         //        delay_ms(5000000);
  29.                 delay1(5000000);
  30.                         GPIO_ResetBits(GPIOC,GPIO_Pin_2);

  31.                                 GPIO_SetBits(GPIOF,GPIO_Pin_7);
  32.         
  33.          delay1(5000000);
  34.         
  35.                
  36.         //        USART_SendData(USART1,0x55);         //???1????
  37.         //        while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//??????
  38.         
  39.         }

  40. }






  41. void sysclock_init(void)
  42. {
  43. unsigned int HSEStartUpStatus;
  44.         
  45.           /*???RCC ?????????*/
  46. RCC_DeInit();  /*????????( HSE)*/
  47. RCC_HSEConfig(RCC_HSE_ON); //RCC_HSE_ON ?SE ????(ON)/*??HSE ??*/
  48. HSEStartUpStatus = RCC_WaitForHSEStartUp();
  49. if(HSEStartUpStatus == SUCCESS) //SUCCESS :HSE ???????
  50. { /*??AHB ??( HCLK)*/
  51. RCC_HCLKConfig(RCC_SYSCLK_Div1); //RCC_SYSCLK_Div1 ?AHB??= ????
  52. /* ????AHB ??( PCLK2 )*/
  53. RCC_PCLK2Config(RCC_HCLK_Div1); //RCC_HCLK_Div1 ?APB2??=HCLK
  54. /*????AHB ??( PCLK1 )*/
  55. RCC_PCLK1Config(RCC_HCLK_Div2); //RCC_HCLK_Div2 ? APB1??=HCLK/2
  56. /*??FLASH ??????????*/
  57. FLASH_SetLatency(FLASH_Latency_2); //FLASH_Latency_2 2 ????
  58. /*??FLASH ????????*/
  59. //FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); // ???????  /*??PLL ????????*/
  60. //RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
  61. // PLL ?????= HSE ????; RCC_PLLMul_9 ?PLL ????x 9  /*??PLL */
  62. RCC_PLLCmd(ENABLE);
  63. /*?????RCC ???(PLL ?????)????*/
  64. while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  65. { }
  66. /*??????( SYSCLK )*/
  67. RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
  68. //RCC_SYSCLKSource_PLLCLK ???PLL ??????   /* PLL ????????????*/
  69. while(RCC_GetSYSCLKSource() != 0x08); //0x08 :PLL ??????


  70.         
  71. }        
  72. }                        


  73. void delay1(int n)
  74. {
  75. while(n--);


  76. }



  77. void delay_ms(u16 nms)
  78. {        int i;
  79.         for(i=0;i<nms;i++);
  80.         
  81. }
  82. //??nus
  83. //nus?????us?.        
  84. //??:nus??,????798915us




  85. void LED_Init(void)
  86.          {
  87. GPIO_InitTypeDef GPIO_InitStructure;
  88.         
  89. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC,ENABLE);
  90.                   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,ENABLE);

  91.         //F9
  92. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;
  93. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  94. GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  95.         GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  96.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  97.         
  98. GPIO_Init(GPIOC,&GPIO_InitStructure);
  99.         GPIO_SetBits(GPIOC,GPIO_Pin_2);
  100.         
  101.         //F10
  102. GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;
  103. GPIO_InitStructure.GPIO_Mode=GPIO_Mode_OUT;
  104. GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
  105.         GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;
  106.         GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
  107.         
  108. GPIO_Init(GPIOF,&GPIO_InitStructure);        
  109. GPIO_SetBits(GPIOF,GPIO_Pin_7);
  110. }











  111. void uart_init(void){
  112.    //GPIO????
  113.   GPIO_InitTypeDef GPIO_InitStructure;
  114.         USART_InitTypeDef USART_InitStructure;
  115.         NVIC_InitTypeDef NVIC_InitStructure;
  116.         
  117.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //??GPIOA??
  118.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//??USART1??

  119.         //??1????????
  120.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9???USART1
  121.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10???USART1
  122.         
  123.         //USART1????
  124.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9?GPIOA10
  125.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//????
  126.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //??50MHz
  127.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //??????
  128.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //??
  129.         GPIO_Init(GPIOA,&GPIO_InitStructure); //???PA9,PA10

  130.    //USART1 ?????
  131.         USART_InitStructure.USART_BaudRate = 115200;//?????
  132.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???8?????
  133.         USART_InitStructure.USART_StopBits = USART_StopBits_1;//?????
  134.         USART_InitStructure.USART_Parity = USART_Parity_No;//??????
  135.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//????????
  136.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //????
  137.   USART_Init(USART1, &USART_InitStructure); //?????1
  138.         
  139.   USART_Cmd(USART1, ENABLE);  //????1
  140.         
  141.         //USART_ClearFlag(USART1, USART_FLAG_TC);
  142.         
  143. //#if EN_USART1_RX        
  144.         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//??????

  145.         //Usart1 NVIC ??
  146.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//??1????
  147.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//?????3
  148.         NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                //????3
  149.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ????
  150.         NVIC_Init(&NVIC_InitStructure);        //??????????VIC????

  151. //#endif
  152.         
  153. }

  154. void USART1_IRQHandler(void)                        //??1??????
  155. {
  156.         u8 Res;
  157.         u8  tempx=2;
  158.         Res=3;
  159.         tempx+=Res;
  160.         Res=USART_ReceiveData(USART1);
  161.         tempx+=Res;
  162.         
  163.                 USART_SendData(USART1,Res);         //???1????
  164.                 while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//??????
  165. //#if SYSTEM_SUPPORT_OS                 //??SYSTEM_SUPPORT_OS??,?????OS.
  166. //        OSIntEnter();   
  167. //#endif
  168. //        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //????(?????????0x0d 0x0a??)
  169. //        {
  170. //                Res =USART_ReceiveData(USART1);//(USART1->DR);        //????????
  171. //               
  172. //                if((USART_RX_STA&0x8000)==0)//?????
  173. //                {
  174. //                        if(USART_RX_STA&0x4000)//????0x0d
  175. //                        {
  176. //                                if(Res!=0x0a)USART_RX_STA=0;//????,????
  177. //                                else USART_RX_STA|=0x8000;        //?????
  178. //                        }
  179. //                        else //????0X0D
  180. //                        {        
  181. //                                if(Res==0x0d)USART_RX_STA|=0x4000;
  182. //                                else
  183. //                                {
  184. //                                        USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
  185. //                                        USART_RX_STA++;
  186. //                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//??????,??????         
  187. //                                }                 
  188. //                        }
  189. //                }                    
  190. //  }
  191. //#if SYSTEM_SUPPORT_OS         //??SYSTEM_SUPPORT_OS??,?????OS.
  192. //        OSIntExit();                                                                                          
  193. //#endif
  194. }
复制代码

所有资料51hei提供下载:
串口通讯.7z (7.08 MB, 下载次数: 34)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表