Lab3: 自行车码表
自行车码表
实验环境windows。
其实只是想起我的博客还一点都没写,就想把实验过程写下来,可以给写报告的我回忆。毕竟我只是一条金鱼。
配环境
安装STM32CubeMX,改安装地址,下一步下一步,over. 改软件安装地址的话最好是英文路径,软件装多了的觉悟┗|`O′|┛
实验步骤
******************************************************************************* File Name : main.c* Description : Main program body******************************************************************************/* Includes ------------------------------------------------------------------*/
#include "stm32f1xx_hal.h"/* USER CODE BEGIN Includes *//* USER CODE END Includes *//* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef huart1;/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*//* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*//* USER CODE END PFP *//* USER CODE BEGIN 0 */UART_HandleTypeDef UartHandle;
void UART0_Init(UART_HandleTypeDef* UartHandle){UartHandle->Instance = USART1;UartHandle->Init.BaudRate = 9600;UartHandle->Init.WordLength = UART_WORDLENGTH_8B;UartHandle->Init.StopBits = UART_STOPBITS_1;UartHandle->Init.Parity = UART_PARITY_NONE;UartHandle->Init.HwFlowCtl = UART_HWCONTROL_NONE;UartHandle->Init.Mode = UART_MODE_TX_RX;HAL_UART_Init(UartHandle);
}#define MAX_BITCOUNT 0xff
#define CHECK_DELAY 10
#define PERIMETER 2
void anti_jitter(int *bitcount, int state){*bitcount <<= 1;*bitcount &= MAX_BITCOUNT;*bitcount += state & 1;
}int PAcount=0, PAflag=0,mode = 0;
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){switch (GPIO_Pin){case GPIO_PIN_11:HAL_UART_Transmit(&UartHandle, (uint8_t*)"PA11 invokes\r\n", 14, 100);mode=1-mode;break;case GPIO_PIN_12:PAcount++;break;}
}//Timer InitializationTIM_HandleTypeDef TIM_Handle;TIM_ClockConfigTypeDef sClockSourceConfig;TIM_MasterConfigTypeDef sMasterConfig;int TIMflag = 0, TIMcount = 0;void TIM_Init(){TIM_Handle.Instance = TIM3;TIM_Handle.Init.Prescaler = 8000;TIM_Handle.Init.CounterMode = TIM_COUNTERMODE_UP;TIM_Handle.Init.Period = 199;TIM_Handle.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;HAL_TIM_Base_Init(&TIM_Handle);sClockSourceConfig.ClockSource = TIM_CLOCKSOURCE_INTERNAL;HAL_TIM_ConfigClockSource(&TIM_Handle, &sClockSourceConfig);sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;HAL_TIMEx_MasterConfigSynchronization(&TIM_Handle, &sMasterConfig);}void TIM3_IRQHandler(void){HAL_TIM_IRQHandler(&TIM_Handle);
}int Route[5];
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim){TIMcount++;int cnt = 0;char sentence[64];int current = (TIMcount - 1) % 5;int previous = (current + 1) % 5;int distance = PAcount * PERIMETER;Route[current] = distance;if(mode == 0){cnt = sprintf(sentence, "Distance: %d\r\n", distance);}else{float speed = Route[current] - Route[previous];cnt = sprintf(sentence, "Speed: %f\r\n", speed / 1.0);}HAL_UART_Transmit(&UartHandle, (uint8_t*)sentence, cnt, 100);
} /* USER CODE END 0 */int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration----------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* Configure the system clock */SystemClock_Config();/* Initialize all configured peripherals */MX_GPIO_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */UART0_Init(&UartHandle);//HAL_UART_Transmit(&UartHandle, (uint8_t*)"Hello", 5, 100);TIM_Init();HAL_TIM_Base_Start_IT(&TIM_Handle);GPIO_InitTypeDef GPIO_InitStruct;__GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);GPIO_InitStruct.Pin = GPIO_PIN_12;
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
GPIO_InitStruct.Pull = GPIO_PULLUP;
GPIO_InitStruct.Speed = GPIO_SPEED_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);HAL_NVIC_SetPriority(EXTI15_10_IRQn,0,0);
HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */HAL_SuspendTick();HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);HAL_PWR_EnableSleepOnExit(); while (1){}/* USER CODE END 3 */}/** System Clock Configuration
*/
void SystemClock_Config(void)
{RCC_OscInitTypeDef RCC_OscInitStruct;RCC_ClkInitTypeDef RCC_ClkInitStruct;RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;RCC_OscInitStruct.HSIState = RCC_HSI_ON;RCC_OscInitStruct.HSICalibrationValue = 16;RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;HAL_RCC_OscConfig(&RCC_OscInitStruct);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;HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);/* SysTick_IRQn interrupt configuration */HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}/* USART1 init function */
void MX_USART1_UART_Init(void)
{huart1.Instance = USART1;huart1.Init.BaudRate = 115200;huart1.Init.WordLength = UART_WORDLENGTH_8B;huart1.Init.StopBits = UART_STOPBITS_1;huart1.Init.Parity = UART_PARITY_NONE;huart1.Init.Mode = UART_MODE_TX_RX;huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;huart1.Init.OverSampling = UART_OVERSAMPLING_16;HAL_HalfDuplex_Init(&huart1);}/** Configure pins as * Analog * Input * Output* EVENT_OUT* EXTI
*/
void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct;/* GPIO Ports Clock Enable */__HAL_RCC_GPIOA_CLK_ENABLE();/*Configure GPIO pins : PA11 PA12 */GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_12;GPIO_InitStruct.Mode = GPIO_MODE_INPUT;GPIO_InitStruct.Pull = GPIO_NOPULL;HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);}/* USER CODE BEGIN 4 *//* USER CODE END 4 */#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,ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) *//* USER CODE END 6 */}#endif/*** @}*/ /*** @}
*/ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Lab3: 自行车码表相关推荐
- 基于51单片机自行车码表设计
[毕设课设]基于51单片机自行车码表设计 效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: 效果图 更多内容请关注@WENJIE电子科技 基于51单片机proteu ...
- Garmin Edge 1030 Plus GPS 骑行码表今日立减 300 美元
Prime 会员日已全面生效,甚至山地自行车手和其他骑自行车的人也可以参加 Prime 会员日优惠 .Garmin Edge 1030 Plus自行车电脑在Prime Day的价格降至400美元,如果 ...
- 智能可穿戴平台,你更看好谁?
随着可穿戴设备大潮来袭,众巨头纷纷布局可穿戴.6月,苹果发布了Healthkit平台,谷歌则发布了AndroidWare平台,日前,腾讯(微信)的智能硬件计划曝光.前两者从系统层面出发,都希望自己成为 ...
- 从 B 站火到 GitHub,国人开发者又一黑科技面世!
点击上方"Github爱好者社区",选择星标 回复"资料",获取小编整理的一份资料月石一 发自 凹非寺本文经AI新媒体量子位(ID:QbitAI)授权转载,转载 ...
- 《痞子衡嵌入式半月刊》 第 50 期
痞子衡嵌入式半月刊: 第 50 期 这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期. 本期刊是开源项目(GitHub: JayHeng/pz ...
- c语言单片机停车场收费系统,基于51单片机停车场车位引导系统设计
?周明彬 曾伊玲 摘要:在很多人流量大的地方,因为车辆集中的情况,所以每次经过停车场时都需要工作人员来指挥车辆,告诉车主停车场那些地方还有空余车位可以泊车.所以很多地方的旧停车场使用的管理方式,是十分 ...
- 自制车速记录仪「GitHub 热点速览 v.21.31」
作者:HelloGitHub-小鱼干 如果你有一辆普通的自行车,那么就可以使用下 X-TRACK 这个项目制作一个自己的测速器,记录你的行驶轨迹还有车速,体验一把硬件发烧友的乐趣.如果你有一个非 ma ...
- 基于单片机的压力流量报警器(附代码+仿真+论文)
基于单片机的压力流量报警器(附代码+仿真+论文) **==完整论文+代码+仿真可关注我在主页私我==** 摘要 关键字 第一章绪论 1.1课题背景及其意义 1.2 国内外的研究状况 1.3本文的主要研 ...
- Edge 705试用
Edge 705是早就听说过的玩意,特别是在环法自行车赛中出尽了风头,那时候在想我要是有一个Edge 705那该多好啊.现在,我终于有了一个Edge 705,是英文版的,不过有已经不错了.只是由于平时 ...
- 咕咚为何值1.5亿美元?
做运动社区和智能硬件产品的咕咚昨日宣布从SIG和软银获得3000千万美金的B轮融资,估值1.5亿美元.咕咚CEO申波表示这笔钱将主要用于研发.运营和人才引进. 之前咕咚曾在今年3月份获得来自深创投和中 ...
最新文章
- 【2018.2.28】思考与练习
- 07Oracle Database 数据表
- asp.net等项目编译失败的原因之不能写入
- DEEPIN 20安装镜像进入LIVE模式
- 潭州课堂25班:Ph201805201 爬虫基础 第九课 图像处理- PIL (课堂笔记)
- IoT -- (三) 2018 Top物联网项目排名
- unwrap函数c语言实现,AppDomain与Assembly的动态加载与卸载代码详解
- 一行数据中三列值的比较
- java计算两个经纬度之间的直线距离
- 如何编写DTD文档类型定义
- 【Bugku】Misc2
- 初试Android原生弹窗
- Volume was not properly unmounted. Some data may be corrupt
- csdn格式字体、样式、排版
- SVN服务器迁移方法(Windows环境)
- 【SQL注入】手工注入常用语句合集
- Python调用百度AI接口
- mysql 定时任务编写
- 洛谷P2698 [USACO12MAR]Flowerpot S
- 安装和设置vAG服务器虚拟机的过程,CDSM-5 桌面云安装部署