f103c6t6a_hex文件
#include "main.h"#include "stdlib.h"void SystemClock_Config(void);
static void MX_GPIO_Init(void);
// 自定义abc引脚
#define A_PIN GPIO_PIN_1
#define B_PIN GPIO_PIN_2
#define C_PIN GPIO_PIN_0 //y0到y7输出
void segment(char c){if(c == 'a'){GPIOB->BRR = A_PIN | B_PIN | C_PIN; }else if(c == 'b'){GPIOB->BSRR = A_PIN; GPIOB->BRR = B_PIN | C_PIN;
}else if(c == 'c'){GPIOB->BSRR = B_PIN; GPIOB->BRR = A_PIN | C_PIN;
}else if(c == 'd'){GPIOB->BSRR = A_PIN|B_PIN ; GPIOB->BRR = C_PIN;
}else if(c == 'e'){GPIOB->BSRR = C_PIN; GPIOB->BRR = A_PIN | B_PIN;
}else if(c == 'f'){GPIOB->BSRR = A_PIN| C_PIN; GPIOB->BRR = B_PIN ;
}else if(c == 'g'){GPIOB->BSRR =B_PIN| C_PIN; GPIOB->BRR = A_PIN ;
}else if(c == 'p'){GPIOB->BSRR =A_PIN |B_PIN| C_PIN;
}}char segment_list[]={'a','b','c','d','e','f','g','p'};
int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();while (1){for(int i=0;i<=7;i++){segment(segment_list[i]);HAL_Delay(500);}} }void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the CPU, AHB and APB busses clocks */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB busses clocks */RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
}/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIOInitStruct = {0}; // 初始化 GPIO 结构体// 使能 GPIO 端口时钟__HAL_RCC_GPIOB_CLK_ENABLE();// 设置 GPIO 的通用配置GPIOInitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 设置为推挽输出模式GPIOInitStruct.Pull = GPIO_NOPULL; // 不使用上拉或下拉GPIOInitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 设置为低速// 配置 GPIOB 端口的所有引脚GPIOInitStruct.Pin = GPIO_PIN_All; // 指定所有引脚HAL_GPIO_Init(GPIOB, &GPIOInitStruct); // 初始化配置}void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state *//* USER CODE END Error_Handler_Debug */
}#ifdef USE_FULL_ASSERT
控制74hc238显示变化的数字
c6t6控制74hc238 hex文件
#include "main.h"
#include "stdlib.h"
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
// 定义74hc238输入引脚
#define A_PIN GPIO_PIN_1
#define B_PIN GPIO_PIN_2
#define C_PIN GPIO_PIN_0 // 数码管段码
const uint16_t num_to_segment[] = {0x3F,0x06,0x5b,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F
};void segment(char c){//74HC238三位输入对应八位输出GPIOB -> BRR = GPIO_PIN_8;//E3拉低 关闭输出if(c == 'a'){GPIOB->BRR = A_PIN | B_PIN | C_PIN; }else if(c == 'b'){GPIOB->BSRR = A_PIN; GPIOB->BRR = B_PIN | C_PIN;
}else if(c == 'c'){GPIOB->BSRR = B_PIN; GPIOB->BRR = A_PIN | C_PIN;
}else if(c == 'd'){GPIOB->BSRR = A_PIN|B_PIN ; GPIOB->BRR = C_PIN;
}else if(c == 'e'){GPIOB->BSRR = C_PIN; GPIOB->BRR = A_PIN | B_PIN;
}else if(c == 'f'){GPIOB->BSRR = A_PIN| C_PIN; GPIOB->BRR = B_PIN ;
}else if(c == 'g'){GPIOB->BSRR =B_PIN| C_PIN; GPIOB->BRR = A_PIN ;
}else if(c == 'p'){GPIOB->BSRR =A_PIN |B_PIN| C_PIN;
}GPIOB -> BSRR = GPIO_PIN_8;//E3拉高 输出
HAL_Delay(1/100);//显示1ms
}void hc238_disnumber(int num){//74hc238显示数字for(int i7=0;i7<2;i7++){GPIOB->BSRR = GPIO_PIN_5|GPIO_PIN_6; //拉高公共端(阴极),关闭显示 int num_1 = num%10;num = num/10;if(i7==0){GPIOB->BRR = GPIO_PIN_6; //显示个位//HAL_Delay(1);// break;
}
else{GPIOB->BRR = GPIO_PIN_5; //显示十位//HAL_Delay(1);// break;
}
switch(num_1){case 0://显示0segment('a');segment('b');segment('c');segment('d');segment('e');segment('f');break;case 1://显示1segment('b');segment('c');break;case 2://显示2segment('a');segment('b');segment('g');segment('d');segment('e');break;case 3:segment('a');segment('b');segment('c');segment('d');segment('g');break;case 4:segment('b');segment('c');segment('f');segment('g');break;case 5:segment('a');segment('f');segment('c');segment('d');segment('g');break;case 6:segment('a');segment('c');segment('d');segment('e');segment('f');segment('g');break;case 7:segment('a');segment('b');segment('c');break;case 8:segment('a');segment('b');segment('c');segment('d');segment('e');segment('g');segment('f');break;case 9:segment('a');segment('b');segment('f');segment('c');segment('d');segment('g');break;}if (num==0){
break;
}}
}void display_number1(int n);//函数声明int main(void){SystemClock_Config();MX_GPIO_Init();
while (1) //while (1){for(int i=0;i<=9;i++){for(int t=0;t<13;t++){//显示时间控制display_number1(i+50);//直连数码管数字显示hc238_disnumber(i*10);//控制74hc238显示数字}}} //while}//mainint p1;
int i1;void display_number1(int n1){for (i1=0;i1<2;i1++){GPIOA->BRR = GPIO_PIN_All;//清除GPIO端口A的所有引脚p1 = n1%10;//求余数,47%10=7,4%10=4GPIOA->ODR =num_to_segment[p1];//向gpioA端口写入段码n1 = n1/10;//进位,47/10=4GPIOA->BSRR = GPIO_PIN_11|GPIO_PIN_12; //共阴极拉高,清除显示switch(i1){case 0:GPIOA->BRR = GPIO_PIN_12; //个位break;case 1:GPIOA->BRR = GPIO_PIN_11; //十位break;}HAL_Delay(1);if (n1 == 0){break;}}}void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct = {0};RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};/** Initializes the CPU, AHB and APB busses clocks */RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK){Error_Handler();}/** Initializes the CPU, AHB and APB busses clocks */RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK){Error_Handler();}
}/*** @brief GPIO Initialization Function* @param None* @retval None*/
static void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIOInitStruct = {0}; // 初始化 GPIO 结构体// 使能 GPIO 端口时钟__HAL_RCC_GPIOC_CLK_ENABLE();__HAL_RCC_GPIOD_CLK_ENABLE();__HAL_RCC_GPIOA_CLK_ENABLE();__HAL_RCC_GPIOB_CLK_ENABLE();// 设置 GPIO 的通用配置GPIOInitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 设置为推挽输出模式GPIOInitStruct.Pull = GPIO_NOPULL; // 不使用上拉或下拉GPIOInitStruct.Speed = GPIO_SPEED_FREQ_LOW; // 设置为低速// 配置 GPIOA和B 端口的所有引脚GPIOInitStruct.Pin = GPIO_PIN_All; // 指定所有引脚HAL_GPIO_Init(GPIOB, &GPIOInitStruct); // 初始化B配置HAL_GPIO_Init(GPIOA, &GPIOInitStruct);// 初始化A配置 }void Error_Handler(void)
{/* USER CODE BEGIN Error_Handler_Debug *//* User can add his own implementation to report the HAL error return state *//* USER CODE END Error_Handler_Debug */
}#ifdef USE_FULL_ASSERT
/*** @brief Reports the name of the source file and the source line number* where the assert_param error has occurred.* @param file: pointer to the source file name* @param line: assert_param error line source number* @retval None*/
void assert_failed(uint8_t *file, uint32_t line)
{ /* USER CODE BEGIN 6 *//* User can add his own implementation to report the file name and line number,tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/