成果
实验器材由一个W806和一个数码管构成。
使用的数码管是共阳极,如果是共阴极,输出取反(即0改成1,1改成0)。
数码管的控制比较简单,跟点亮LED灯一个意思,对我来说成功率高一些。
本实验共使用9个GPIO口,分别为PA0~PA8,为图省事,方便焊接,公共端使用PA2,其余引脚对应如下:
什么原理,我也不懂得说。
实验代码:
- #include
- #include "wm_hal.h"
- void Error_Handler(void);
- void LED_0(void);
- void LED_1(void);
- void LED_2(void);
- void LED_3(void);
- void LED_4(void);
- void LED_5(void);
- void LED_6(void);
- void LED_7(void);
- void LED_8(void);
- void LED_9(void);
- void LED_dian(void);
- static void GPIO_Init(void);
- static volatile uint8_t key_flag = 0;
- int main(void)
- {
- SystemClock_Config(CPU_CLK_160M);
- printf("enter mainrn");
- HAL_Init();
- GPIO_Init();
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_2, 1);
- while (1) {
- printf("0");
- LED_0();
- HAL_Delay(1000);
- printf("1");
- LED_1();
- HAL_Delay(1000);
- printf("2");
- LED_2();
- HAL_Delay(1000);
- printf("3");
- LED_3();
- HAL_Delay(1000);
- printf("4");
- LED_4();
- HAL_Delay(1000);
- printf("5");
- LED_5();
- HAL_Delay(1000);
- printf("6");
- LED_6();
- HAL_Delay(1000);
- printf("7");
- LED_7();
- HAL_Delay(1000);
- printf("8");
- LED_8();
- HAL_Delay(1000);
- printf("9");
- LED_9();
- HAL_Delay(1000);
- printf(".");
- LED_dian();
- HAL_Delay(1000);
- }
- }
- static void GPIO_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStruct = {0};
- __HAL_RCC_GPIO_CLK_ENABLE();
- GPIO_InitStruct.Pin = GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8;
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT;
- GPIO_InitStruct.Pull = GPIO_NOPULL;
- HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
- HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7 | GPIO_PIN_8, GPIO_PIN_SET);
- }
- void LED_0(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_1(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_2(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_3(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_4(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_5(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_6(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_7(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_8(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_9(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 0);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 1);
- }
- void LED_dian(void)
- {
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_3, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_7, 1);
- HAL_GPIO_WritePin(GPIOA, GPIO_PIN_8, 0);
- }
- void Error_Handler(void)
- {
- while (1)
- {
- }
- }
- void assert_failed(uint8_t *file, uint32_t line)
- {
- printf("Wrong parameters value: file %s on line %drn", file, line);
- }
复制代码
0
|
|
|
|