已开源,代码详细见附录
Altium Designer画的原理图和PCB图如下:(51hei附件中可下载工程文件)
单片机源程序如下:
- int main(void)
- {
- /* USER CODE BEGIN 1 */
- // float pitch,roll,yaw; //欧拉角
-
- unsigned char switch_value; //获取到的按键值
- // unsigned long STEPS = 0;
- /* USER CODE END 1 */
- /* MCU Configuration--------------------------------------------------------*/
- /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
- HAL_Init();
- /* USER CODE BEGIN Init */
-
- /* USER CODE END Init */
- /* Configure the system clock */
- SystemClock_Config();
- /* USER CODE BEGIN SysInit */
- /* USER CODE END SysInit */
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_DMA_Init();
- MX_ADC1_Init();
- MX_I2C1_Init();
- MX_SPI1_Init();
- MX_TIM2_Init();
- MX_TIM4_Init();
- MX_USART1_UART_Init();
- MX_RTC_Init();
- MX_I2C2_Init();
- /* USER CODE BEGIN 2 */
-
- /*调节蜂鸣器*/
- HAL_TIM_PWM_Start(&htim4, TIM_CHANNEL_4); //开启定时器PWM通道 定时器2 通道3
- __HAL_TIM_SET_COMPARE(&htim4, TIM_CHANNEL_4, 0); //设置PWM的占空比,这里初始化占空比为0
- printf("初始化蜂鸣器\r\n");
-
-
- /*调节屏幕背光*/
- HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); //开启定时器PWM通道 定时器2 通道3
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 70); //设置PWM的占空比,调节背光
- printf("调节背光\r\n");
-
-
-
- printf("初始化寄存器\r\n");
- // HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1); //打开串口接收中断
- /*主显示界面*/
- MENU_init();
-
- printf("初始化界面\r\n");
-
-
-
- MPU_Init(); //初始化MPU6050
- while(mpu_dmp_init())//初始化DMP
- {
- printf("error\r\n");
- HAL_Delay(10);
- }
-
- printf("初始化陀螺仪\r\n");
-
- HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_SET); //更新LED灯的状态,开机后熄灭
-
- Screen_off_time = sTime.Seconds + 10; //设置自动熄灭屏幕的时间是20秒
-
- if( Screen_off_time > 59 ) //如果设计的屏幕熄灭实践超过了一分钟就倒退回去
- {
- Screen_off_time = Screen_off_time -60; //得到正确的时间
- }
-
- usart_print_flag = 0;
-
- /* USER CODE END 2 */
- /* Infinite loop */
- /* USER CODE BEGIN WHILE */
- while (1)
- {
- /* USER CODE END WHILE */
- /* USER CODE BEGIN 3 */
- //传感器检测
- Get_Sensor_data();
- /*主界面显示部分*/
- MENU_main();
-
- /*根据按键方向按键按下来进入应用界面*/
- MENU_APP(switch_value);
-
- /*处理后台运行的程序*/
- Background_detection(switch_value);
- /*检测按键以及处理自动熄屏和唤醒屏幕*/
- switch_value = Get_Key_value(1);
- if( switch_value == 2)
- {
- /*熄灭屏幕*/
- __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_4, 0); //设置PWM的占空比,调节背光
-
- set_Screen_off_flag = 0; //代表已经熄灭了屏幕 熄灭屏幕的状态下不对按键等操作进行反应
- }
-
- // /*陀螺仪获取角度部分*/
- // if( mpu_dmp_get_data( &pitch, &roll, &yaw ) == 0 )
- // {
- // if(usart_print_flag)
- // {
- // printf("%.2f %.2f %.2f \r\n",pitch,roll,yaw);
- // }
- // }
- // if(usart_print_flag)
- // {
- // printf("温度:%.1f 湿度:%.1f 电量百分比:%d 按键值:%d 日期:%d:%d:%d 时间:%d:%d:%d \r\n",
- // temperature,humidity, Battery_voltage ,
- // switch_value,
- // sDate.Year, sDate.Month, sDate.Date,
- // sTime.Hours, sTime.Minutes, sTime.Seconds);
- // }
- }
- /* USER CODE END 3 */
- }
复制代码
所有资料51hei附件下载:
THwatch.7z
(15.86 MB, 下载次数: 182)
|