久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1705|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于stm32f407的跑馬燈程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
基于stm32f407的跑馬燈這是我昨天做的基于stm32f407的跑馬燈,歡迎交流
  1. #include "led.h"
  2. #include "usart1.h"


  3. /*********************************************************************************
  4. **********************啟明欣欣 STM32F407應(yīng)用開(kāi)發(fā)板(高配版)************************
  5. **********************************************************************************
  6. * 文件名稱(chēng): 例程1 LED跑馬燈主函數(shù)main()                                          *
  7. * 文件簡(jiǎn)述:LED跑馬燈                                                            *
  8. **********************************************************************************
  9. *********************************************************************************/

  10. /*******************下面代碼是通過(guò)位帶操作實(shí)現(xiàn)IO口控制***************************/
  11. int main(void)
  12. {
  13.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
  14.         delay_init();                  //初始化延時(shí)函數(shù)
  15.         LED_Init();                    //初始化LED端口
  16.         uart1_init(115200);
  17.   while(1)
  18.         {
  19.     LED0=0;     //LED0亮
  20.     LED1=1;     //LED1滅
  21.     LED2=1;     //LED2滅
  22.            printf("LED0 is light!\r\n");
  23.     delay_ms(500);
  24.                 LED0=1;     //LED0滅
  25.     LED1=0;     //LED1亮
  26.     LED2=1;     //LED2滅
  27.     printf("LED1 is light!\r\n");
  28.                 delay_ms(500);
  29.                 LED0=1;     //LED0滅
  30.     LED1=1;     //LED1滅
  31.     LED2=0;     //LED2亮
  32.            printf("LED2 is light!\r\n");
  33.     delay_ms(500);
  34.         }
  35. }
復(fù)制代碼
  1. #include "usart1.h"
  2. #include "string.h"
  3. #include "stdlib.h"  
  4. #include "led.h"


  5. /*********************************************************************************
  6. ************************啟明欣欣 STM32F407核心開(kāi)發(fā)板******************************
  7. **********************************************************************************
  8. * 文件名稱(chēng): usart1.c                                                             *
  9. * 文件簡(jiǎn)述:USART1使用                                                           *
  10. * 創(chuàng)建日期:2015.03.06                                                           *
  11. * 版    本:V1.0                                                                 *
  12. * 作    者:Clever                                                               *
  13. * 說(shuō)    明:利用串口調(diào)試助手經(jīng)過(guò)USART1控制LED亮滅與蜂鳴器響閉                    *
  14. **********************************************************************************
  15. *********************************************************************************/        

  16. u8 receive_str[USART1_REC_NUM];     //接收緩存數(shù)組,最大USART_REC_LEN個(gè)字節(jié)
  17. u8 uart_byte_count=0;

  18. /****************************************************************************
  19. * 名    稱(chēng): void uart1_init(u32 bound)
  20. * 功    能:USART1初始化
  21. * 入口參數(shù):bound:波特率
  22. * 返回參數(shù):無(wú)
  23. * 說(shuō)    明:
  24. ****************************************************************************/
  25. void uart1_init(u32 bound)
  26. {   //GPIO端口設(shè)置
  27.   GPIO_InitTypeDef GPIO_InitStructure;
  28.         USART_InitTypeDef USART_InitStructure;
  29.         NVIC_InitTypeDef NVIC_InitStructure;
  30.         
  31.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA時(shí)鐘
  32.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);//使能USART1時(shí)鐘
  33.         //串口1對(duì)應(yīng)引腳復(fù)用映射
  34.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);  //GPIOA9復(fù)用為USART1
  35.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10復(fù)用為USART1
  36.         //USART1端口配置
  37.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10; //GPIOA9與GPIOA10
  38.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;      //復(fù)用功能
  39.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;        //速度50MHz
  40.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽復(fù)用輸出
  41.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;   //上拉
  42.         GPIO_Init(GPIOA,&GPIO_InitStructure);          //初始化PA9,PA10
  43.    //USART1 初始化設(shè)置
  44.         USART_InitStructure.USART_BaudRate = bound;//波特率設(shè)置
  45.         USART_InitStructure.USART_WordLength = USART_WordLength_8b;//字長(zhǎng)為8位數(shù)據(jù)格式
  46.         USART_InitStructure.USART_StopBits = USART_StopBits_1;  //一個(gè)停止位
  47.         USART_InitStructure.USART_Parity = USART_Parity_No;//無(wú)奇偶校驗(yàn)位
  48.         USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無(wú)硬件數(shù)據(jù)流控制
  49.         USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;        //收發(fā)模式
  50.   USART_Init(USART1, &USART_InitStructure); //初始化串口1        
  51.   USART_Cmd(USART1, ENABLE);  //使能串口1
  52.         
  53.         USART_ClearFlag(USART1, USART_FLAG_TC);
  54.         
  55.         USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);         //開(kāi)啟相關(guān)中斷
  56.         //Usart1 NVIC 配置
  57.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;      //串口1中斷通道
  58.         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;//搶占優(yōu)先級(jí)3
  59.         NVIC_InitStructure.NVIC_IRQChannelSubPriority =3;                   //子優(yōu)先級(jí)3
  60.         NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                           //IRQ通道使能
  61.         NVIC_Init(&NVIC_InitStructure);          //根據(jù)指定的參數(shù)初始化VIC寄存器、
  62. }

  63. //串口1發(fā)送一個(gè)字符
  64. void uart1SendChar(u8 ch)
  65. {      
  66.         while((USART1->SR&0x40)==0);  
  67.     USART1->DR = (u8) ch;      
  68. }

  69. /****************************************************************************
  70. * 名    稱(chēng): int fputc(int ch, FILE *f)
  71. * 功    能:重定向,讓printf輸出到串口  
  72. * 入口參數(shù):
  73. * 返回參數(shù):
  74. * 說(shuō)    明:因printf()之類(lèi)的函數(shù),使用了半主機(jī)模式。使用標(biāo)準(zhǔn)庫(kù)會(huì)導(dǎo)致程序無(wú)法
  75.             運(yùn)行,以下是解決方法:使用微庫(kù),因?yàn)槭褂梦?kù)的話(huà),不會(huì)使用半主機(jī)模式.
  76.             請(qǐng)?jiān)诠こ虒傩缘摹癟arget“-》”Code Generation“中勾選”Use MicroLIB“這
  77.             樣以后就可以使用printf,sprintf函數(shù)了  
  78. ****************************************************************************/
  79. int fputc(int ch, FILE *f)   //重定向,讓printf輸出到串口  
  80. {
  81.     uart1SendChar(ch);
  82.     while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
  83.         
  84.     return ch;
  85. }

  86. /****************************************************************************
  87. * 名    稱(chēng): void uart1SendChars(u8 *str, u16 strlen)
  88. * 功    能:串口1發(fā)送一字符串
  89. * 入口參數(shù):*str:發(fā)送的字符串
  90.             strlen:字符串長(zhǎng)度
  91. * 返回參數(shù):無(wú)
  92. * 說(shuō)    明:
  93. ****************************************************************************/
  94. void uart1SendChars(u8 *str, u16 strlen)
  95. {
  96.           u16 k= 0 ;
  97.    do { uart1SendChar(*(str + k)); k++; }   //循環(huán)發(fā)送,直到發(fā)送完畢   
  98.     while (k < strlen);
  99. }

  100. //串口1中斷服務(wù)程序
  101. void USART1_IRQHandler(void)  
  102. {
  103.         u8 rec_data;
  104.         if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中斷
  105.                 {
  106.                                 rec_data =(u8)USART_ReceiveData(USART1);         //(USART1->DR) 讀取接收到的數(shù)據(jù)
  107.         if(rec_data=='S')                                                   //如果是S,表示是命令信息的起始位
  108.                                 {
  109.                                         uart_byte_count=0x01;
  110.                                 }

  111.                         else if(rec_data=='E')                                         //如果E,表示是命令信息傳送的結(jié)束位
  112.                                 {
  113.                                         if(strcmp("Light_led0",(char *)receive_str)==0)        LED0=0;        //點(diǎn)亮LED1
  114.                                         else if(strcmp("Close_led0",(char *)receive_str)==0)   LED0=1;        //關(guān)滅LED1
  115.                                         if(strcmp("Light_led1",(char *)receive_str)==0)        LED1=0;        //點(diǎn)亮LED1
  116.                                         else if(strcmp("Close_led1",(char *)receive_str)==0)   LED1=1;        //關(guān)滅LED1
  117.                                         if(strcmp("Light_led2",(char *)receive_str)==0)        LED2=0;        //點(diǎn)亮LED1
  118.                                         else if(strcmp("Close_led2",(char *)receive_str)==0)   LED2=1;        //關(guān)滅LED1
  119. //                                        else if(strcmp("Open_beep",(char *)receive_str)==0)    BEEP=1;         //蜂鳴器響
  120. //                                        else if(strcmp("Close_beep",(char *)receive_str)==0)   BEEP=0;         //蜂鳴器不響
  121.                                        
  122.                                         for(uart_byte_count=0;uart_byte_count<32;uart_byte_count++)receive_str[uart_byte_count]=0x00;
  123.                                         uart_byte_count=0;   
  124.                                 }                                 
  125.                         else if((uart_byte_count>0)&&(uart_byte_count<=USART1_REC_NUM))
  126.                                 {
  127.                                    receive_str[uart_byte_count-1]=rec_data;
  128.                                    uart_byte_count++;
  129.                                 }                                 
  130.    }
  131. }
復(fù)制代碼
LED1.7z (290.83 KB, 下載次數(shù): 12)

51hei圖片20201003165458.png (69.62 KB, 下載次數(shù): 43)

51hei圖片20201003165458.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 人人澡人人射 | 日韩精品在线一区 | 国产小视频在线 | 黄网站涩免费蜜桃网站 | 成人精品国产免费网站 | 欧美中国少妇xxx性高请视频 | 婷婷91 | 日韩欧美一区二区三区免费观看 | 国产高清无av久久 | www国产成人免费观看视频,深夜成人网 | 日本aaaa| 国产精品久久久久一区二区三区 | 欧美a∨ | 欧美13videosex性极品 | 亚洲在线一区二区 | 久久99精品国产自在现线小黄鸭 | 国产精品视频久久久久 | 欧美日韩黄色一级片 | 你懂的在线视频播放 | 国产精品久久久久永久免费观看 | 久久久久久久久久性 | 久久大 | 中文成人无字幕乱码精品 | 欧美日韩在线观看一区二区三区 | 91国内外精品自在线播放 | 人人人人干 | 日韩一区二区三区精品 | 天天操综合网站 | 国产精品成人一区二区 | 99久久免费精品视频 | 色免费在线视频 | 视频1区| 成人av电影免费在线观看 | 欧美日韩一区二区三区视频 | 在线观看深夜视频 | 欧美九九 | 久久蜜桃资源一区二区老牛 | 在线观看亚洲一区二区 | www.日日操 | 国产精品久久久 | 99精品欧美一区二区三区 |