找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5310|回復(fù): 2
收起左側(cè)

STM32 LED八進(jìn)制燈全套資料(系統(tǒng)板、原理圖、GPIO、空指令延時(shí))

[復(fù)制鏈接]
ID:265379 發(fā)表于 2017-12-22 16:44 | 顯示全部樓層 |閱讀模式
1、中斷方案

三個(gè)定時(shí)器的中斷服務(wù)程序各自負(fù)責(zé)一個(gè)LED

2、main方案

依據(jù)八進(jìn)制真值表進(jìn)行三個(gè)LED燈的亮滅切換
0.jpg

ppt教程:
0.jpg

1、了解STM32最小系統(tǒng)板的軟硬件組成。
2、考察C代碼閱讀能力、掌握C函數(shù)編寫。
3、掌握嵌入式開發(fā)的單步跟蹤調(diào)試、實(shí)時(shí)變量查看。
4、掌握開關(guān)LED的GPIO編程實(shí)現(xiàn)。
5、掌握基于空指令延時(shí)的LED跑馬燈編程實(shí)現(xiàn)。
1、閱讀STM32系統(tǒng)板原理圖,找到最小系統(tǒng)板的幾個(gè)組成部分,以及LED、KEY和UART擴(kuò)展電路。
2、安裝Keil ARM開發(fā)軟件,根據(jù)《問題匯總》解決遇到問題,注意SWD仿真器的選擇、STM32 Flash的配置。
3、針對示例代碼,進(jìn)行源碼編譯、程序下載、斷點(diǎn)設(shè)置、單步調(diào)試、全速運(yùn)行,注意區(qū)分compile&build、load&debug。
    (思考題:AddWatch可以查看變量值,但如何通過內(nèi)存地址查看變量值呢?)
4、編寫程序,實(shí)現(xiàn)LedInit、SetLedOn、SetLedOff函數(shù),注意單片機(jī)Main主函數(shù)的初始化部分和主體功能循環(huán)部分。
5、編寫程序,實(shí)現(xiàn)MyDelay延時(shí)函數(shù)。
6、編寫程序,實(shí)現(xiàn)LED跑馬燈,或八進(jìn)制燈(可選)。
7、提高:閱讀STM32原理圖,找到特殊的LED4和KEY4,借助杜邦線連接LED4和STM32芯片的某個(gè)GPIO管腳,并在Keil環(huán)境編程,實(shí)現(xiàn)對LED4的亮滅控制。

GPIO-流水燈-使用庫函數(shù)stm32單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2018-xx-xx
  7.   * @brief   測試led
  8.   ******************************************************************************
  9.   * @attention
  10.   *
  11.   ******************************************************************************
  12.   */
  13.         
  14. #include "stm32f10x.h"
  15. #include "bsp_led.h"

  16. void Delay(__IO u32 nCount);

  17. /**
  18.   * @brief  主函數(shù)
  19.   * @param  無  
  20.   * @retval 無
  21.   */
  22. int main(void)
  23. {        
  24.         /* LED 端口初始化 */
  25.         LED_GPIO_Config();         

  26.         /* 方法2,使用固件庫控制IO */
  27.         while (1)
  28.         {
  29.                 LED1( ON );                          // 亮
  30.                 Delay(0x0FFFFF);
  31.                 LED1( OFF );                  // 滅

  32.                 LED2( ON );                          // 亮
  33.                 Delay(0x0FFFFF);
  34.                 LED2( OFF );                  // 滅

  35.                 LED3( ON );                          // 亮
  36.                 Delay(0x0FFFFF);
  37.                 LED3( OFF );                  // 滅           
  38.         }

  39. }

  40. void Delay(__IO uint32_t nCount)         //簡單的延時(shí)函數(shù)
  41. {
  42.         for(; nCount != 0; nCount--);
  43. }
  44. /*********************************************END OF FILE**********************/
復(fù)制代碼

GPIO-流水燈-直接操作寄存器:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   測試led
  8.   ******************************************************************************
  9.   * @attention
  10.   ******************************************************************************
  11.   */  
  12. #include "stm32f10x.h"
  13. #include "bsp_led.h"

  14. void Delay(__IO u32 nCount);

  15. /**
  16.   * @brief  主函數(shù)
  17.   * @param  無  
  18.   * @retval 無
  19.   */
  20. int main(void)
  21. {        
  22.         /* LED 端口初始化 */
  23.         LED_GPIO_Config();         

  24.         /* 方法1,直接控制寄存器 */
  25.         while(1)
  26.         {
  27.                 // ODR GPIOB
  28.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  29.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (復(fù)位值)
  30.                 // 1  1  1  1      1  1  1 1    1 1 1 1    1 1 1 0

  31.                 GPIOB->ODR = 0XFFFE;                 //低電平,GPIOB0(LED0)燈亮
  32.                 Delay(0x0FFFFF);
  33.                 GPIOB->ODR = 0XFFFF;                //高電平,GPIOB0(LED0)燈滅

  34.                 // ODR GPIOC
  35.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  36.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (復(fù)位值)
  37.                 // 1  1  1  1      1  1  1 1    1 1 1 0    1 1 1 1        
  38.                 GPIOC->ODR = 0XFFEF;                 //低電平,GPIOC4(LED1)燈亮
  39.                 Delay(0x0FFFFF);
  40.    
  41.                 GPIOC->ODR = 0XFFFF;                //高電平,GPIOC4(LED1)燈亮

  42.                 // ODR GPIOC
  43.                 // 15 14 13 12     11 10 9 8    7 6 5 4    3 2 1 0
  44.                 // 0  0  0  0      0  0  0 0    0 0 0 0    0 0 0 0 (復(fù)位值)
  45.                 // 1  1  1  1      1  1  1 1    1 1 1 1    0 1 1 1                        
  46.                 GPIOC->ODR = 0XFFf7;                 //低電平,GPIOC5(LED2)燈亮
  47.                 Delay(0x0FFFFF);
  48.                 GPIOC->ODR = 0XFFFF;                //高電平,GPIOC5(LED2)燈亮
  49.         }
  50. }

  51. void Delay(__IO uint32_t nCount)         //簡單的延時(shí)函數(shù)
  52. {
  53.         for(; nCount != 0; nCount--);
  54. }
  55. /*********************************************END OF FILE**********************/
復(fù)制代碼

GPIO-流水燈-自定義宏操作
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   測試led
  8. #include "stm32f10x.h"
  9. #include "bsp_led.h"

  10. void Delay(__IO u32 nCount);

  11. /**
  12.   * @brief  主函數(shù)
  13.   * @param  無  
  14.   * @retval 無
  15.   */
  16. int main(void)
  17. {        
  18.         /* LED 端口初始化 */
  19.         LED_GPIO_Config();         

  20.         /* 方法3,使用寄存器控制IO */
  21.         while(1)
  22.         {

  23.                 LED1_TOGGLE;                                 //led1狀態(tài)反轉(zhuǎn),亮        
  24.     Delay(0x0FFFFF);
  25.                 LED1_TOGGLE;                                //led1狀態(tài)反轉(zhuǎn),滅

  26.                 LED2_TOGGLE;                                //led2狀態(tài)反轉(zhuǎn),亮
  27.                 Delay(0x0FFFFF);           
  28.                 LED2_TOGGLE;                          //led2狀態(tài)反轉(zhuǎn),滅

  29.                 LED3_TOGGLE;                                //led3狀態(tài)反轉(zhuǎn),亮
  30.                 Delay(0x0FFFFF);
  31.                 LED3_TOGGLE;                                //led3狀態(tài)反轉(zhuǎn),滅
  32.         }
  33. }

  34. void Delay(__IO uint32_t nCount)         //簡單的延時(shí)函數(shù)
  35. {
  36.         for(; nCount != 0; nCount--);
  37. }
  38. /*********************************************END OF FILE**********************/
復(fù)制代碼


0.png 0.jpg

所有資料51hei提供下載:
LED八進(jìn)制燈(系統(tǒng)板、原理圖、GPIO、空指令延時(shí)).zip (1.88 MB, 下載次數(shù): 30)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:243748 發(fā)表于 2017-12-26 08:23 來自觸屏版 | 顯示全部樓層
很好的學(xué)習(xí)資料,謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:63317 發(fā)表于 2020-11-7 11:50 | 顯示全部樓層
很好的學(xué)習(xí)資料
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表