1、中斷方案
三個定時器的中斷服務程序各自負責一個LED
2、main方案
依據八進制真值表進行三個LED燈的亮滅切換
0.jpg (43.77 KB, 下載次數: 31)
下載附件
2017-12-22 20:58 上傳
ppt教程:
0.jpg (40.48 KB, 下載次數: 41)
下載附件
2017-12-22 20:58 上傳
1、了解STM32最小系統板的軟硬件組成。
2、考察C代碼閱讀能力、掌握C函數編寫。
3、掌握嵌入式開發的單步跟蹤調試、實時變量查看。
4、掌握開關LED的GPIO編程實現。
5、掌握基于空指令延時的LED跑馬燈編程實現。
1、閱讀STM32系統板原理圖,找到最小系統板的幾個組成部分,以及LED、KEY和UART擴展電路。
2、安裝Keil ARM開發軟件,根據《問題匯總》解決遇到問題,注意SWD仿真器的選擇、STM32 Flash的配置。
3、針對示例代碼,進行源碼編譯、程序下載、斷點設置、單步調試、全速運行,注意區分compile&build、load&debug。
(思考題:AddWatch可以查看變量值,但如何通過內存地址查看變量值呢?)
4、編寫程序,實現LedInit、SetLedOn、SetLedOff函數,注意單片機Main主函數的初始化部分和主體功能循環部分。
5、編寫程序,實現MyDelay延時函數。
6、編寫程序,實現LED跑馬燈,或八進制燈(可選)。
7、提高:閱讀STM32原理圖,找到特殊的LED4和KEY4,借助杜邦線連接LED4和STM32芯片的某個GPIO管腳,并在Keil環境編程,實現對LED4的亮滅控制。
GPIO-流水燈-使用庫函數stm32單片機源程序如下:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @date 2018-xx-xx
- * @brief 測試led
- ******************************************************************************
- * @attention
- *
- ******************************************************************************
- */
-
- #include "stm32f10x.h"
- #include "bsp_led.h"
- void Delay(__IO u32 nCount);
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
-
- /* 方法2,使用固件庫控制IO */
- while (1)
- {
- LED1( ON ); // 亮
- Delay(0x0FFFFF);
- LED1( OFF ); // 滅
- LED2( ON ); // 亮
- Delay(0x0FFFFF);
- LED2( OFF ); // 滅
- LED3( ON ); // 亮
- Delay(0x0FFFFF);
- LED3( OFF ); // 滅
- }
- }
- void Delay(__IO uint32_t nCount) //簡單的延時函數
- {
- for(; nCount != 0; nCount--);
- }
- /*********************************************END OF FILE**********************/
復制代碼
GPIO-流水燈-直接操作寄存器:
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @date 2013-xx-xx
- * @brief 測試led
- ******************************************************************************
- * @attention
- ******************************************************************************
- */
- #include "stm32f10x.h"
- #include "bsp_led.h"
- void Delay(__IO u32 nCount);
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
- /* 方法1,直接控制寄存器 */
- while(1)
- {
- // ODR GPIOB
- // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (復位值)
- // 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0
- GPIOB->ODR = 0XFFFE; //低電平,GPIOB0(LED0)燈亮
- Delay(0x0FFFFF);
- GPIOB->ODR = 0XFFFF; //高電平,GPIOB0(LED0)燈滅
- // ODR GPIOC
- // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (復位值)
- // 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1
- GPIOC->ODR = 0XFFEF; //低電平,GPIOC4(LED1)燈亮
- Delay(0x0FFFFF);
-
- GPIOC->ODR = 0XFFFF; //高電平,GPIOC4(LED1)燈亮
- // ODR GPIOC
- // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
- // 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (復位值)
- // 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1
- GPIOC->ODR = 0XFFf7; //低電平,GPIOC5(LED2)燈亮
- Delay(0x0FFFFF);
- GPIOC->ODR = 0XFFFF; //高電平,GPIOC5(LED2)燈亮
- }
- }
- void Delay(__IO uint32_t nCount) //簡單的延時函數
- {
- for(; nCount != 0; nCount--);
- }
- /*********************************************END OF FILE**********************/
復制代碼
GPIO-流水燈-自定義宏操作
- /**
- ******************************************************************************
- * @file main.c
- * @author fire
- * @version V1.0
- * @date 2013-xx-xx
- * @brief 測試led
- #include "stm32f10x.h"
- #include "bsp_led.h"
- void Delay(__IO u32 nCount);
- /**
- * @brief 主函數
- * @param 無
- * @retval 無
- */
- int main(void)
- {
- /* LED 端口初始化 */
- LED_GPIO_Config();
-
- /* 方法3,使用寄存器控制IO */
- while(1)
- {
- LED1_TOGGLE; //led1狀態反轉,亮
- Delay(0x0FFFFF);
- LED1_TOGGLE; //led1狀態反轉,滅
- LED2_TOGGLE; //led2狀態反轉,亮
- Delay(0x0FFFFF);
- LED2_TOGGLE; //led2狀態反轉,滅
- LED3_TOGGLE; //led3狀態反轉,亮
- Delay(0x0FFFFF);
- LED3_TOGGLE; //led3狀態反轉,滅
- }
- }
- void Delay(__IO uint32_t nCount) //簡單的延時函數
- {
- for(; nCount != 0; nCount--);
- }
- /*********************************************END OF FILE**********************/
復制代碼
0.png (10.08 KB, 下載次數: 41)
下載附件
2017-12-22 21:00 上傳
0.jpg (11.65 KB, 下載次數: 34)
下載附件
2017-12-22 21:02 上傳
所有資料51hei提供下載:
LED八進制燈(系統板、原理圖、GPIO、空指令延時).zip
(1.88 MB, 下載次數: 30)
2017-12-22 16:43 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|