当前位置: 首页 > news >正文

学校网站建设实施方案seo去哪学

学校网站建设实施方案,seo去哪学,中铁建设集团有限公司中标项目,seo在线优化技术STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯#xff08;HAL库方式#xff09;【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上#xff0c;构建两个任务#xff0c;两个任务分别以1s和3s周期对LED进行点亮—熄灭的…STM32F103C8移植uC/OSIII并以不同周期点亮两个LED灯HAL库方式【uC/OS】【STM32开发板】【STM32CubeMX】 实验说明 将嵌入式操作系统uC/OSIII移植到STM32F103C8上构建两个任务两个任务分别以1s和3s周期对LED进行点亮—熄灭的控制。 获取uC/OSIII源码 链接https://pan.baidu.com/s/1Axjz1ptMjIPcH6_0tjKKDw 提取码ucos 建立STM32CubeMX项目 选择STM32F103C8T6芯片设置PB0和PB1为GPIO_Output用于和LED相连。 如下图设置时钟为72MHz。 配置其它参数后生成Keil项目。 复制uC/OS-III文件到项目文件夹 在生成的项目文件夹下新建一个uCOSIII文件夹将下载的源文件下的uC-CPU、uC-LIB、uCOS-III复制到该文件夹如下图 在Core\Src文件夹下新建OS文件夹将下载的源码中uCOS-CONFIG中的文件app_cfg.h, cpu_cfg.h, includes.h, lib_cfg.h, os_app_hooks.c, os_app_hook.h, os_cfg.h, os_cfg_app.h复制到该OS文件夹中并新建bsp.c, bsp.h文件如下图 添加项目组件和头文件路径 添加项目分组 在生成的Keil项目中添加六个新组bsp, uCOSIII-CPU, uCOSIII-LIB, uCOSIII-Port, uCOSIII-Source, OS-cfg, 如下图 添加文件到分组 将Core\Src\OS路径下的bsp.c和bsp.h文件添加至bsp组中如下图 将uCOSIII\uC-CPU路径下的所有文件及uCOSIII\uC-CPU\ARM-Cortex-M4\RealView路径下的所有文件添加至uCOSIII-CPU组中如下图 将uCOSIII\uC-LIB路径下的所有文件及uCOSIII\uC-LIB\Ports\ARM-Cortex-M4\RealView路径下的所有文件添加至uCOSIII-LIB组中如下图 将uCOSIII\uCOS-III\Ports\ARM-Cortex-M4\Generic\RealView路径下的所有文件添加至uCOSIII-Port组中如下图 将uCOSIII\uCOS-III\Source路径下的所有文件添加至uCOSIII-Source组中如下图 将Core\Src\OS路径下除bsp.c, bsp.h外的所有文件添加至OS-cfg组如下图 添加头文件路径 点击Options for Target点击C/C在Include Path栏中添加以下路径 修改文件内容及编写程序 启动文件 (startup_stm32f103xb.s) 将启动文件中的PendSV_Handler和Systick_Handler改为OS_CPU_PendSVHandler和OS_CPU_SysTickHandler如下图 app_cfg.h #define APP_CFG_SERIAL_EN DEF_ENABLED改为#define APP_CFG_SERIAL_EN DEF_DISABLED#define APP_TRACE BSP_Ser_Printf改为#define APP_TRACE (void)。 includes.h 在#include bsp.h下添加#include gpio.h, #include app_cfg.h#include stm32f10x_lib.h改为#include stm32f1xx_hal.h。 bsp.c和bsp.h bsp.c // bsp.c #include includes.h#define DWT_CR *(CPU_REG32 *)0xE0001000 #define DWT_CYCCNT *(CPU_REG32 *)0xE0001004 #define DEM_CR *(CPU_REG32 *)0xE000EDFC #define DBGMCU_CR *(CPU_REG32 *)0xE0042004#define DEM_CR_TRCENA (1 24) #define DWT_CR_CYCCNTENA (1 0)CPU_INT32U BSP_CPU_ClkFreq (void) {return HAL_RCC_GetHCLKFreq(); }void BSP_Tick_Init(void) {CPU_INT32U cpu_clk_freq;CPU_INT32U cnts;cpu_clk_freq BSP_CPU_ClkFreq();#if(OS_VERSION3000u)cnts cpu_clk_freq/(CPU_INT32U)OSCfg_TickRate_Hz;#elsecnts cpu_clk_freq/(CPU_INT32U)OS_TICKS_PER_SEC;#endifOS_CPU_SysTickInit(cnts); }void BSP_Init(void) {BSP_Tick_Init();MX_GPIO_Init(); }#if (CPU_CFG_TS_TMR_EN DEF_ENABLED) void CPU_TS_TmrInit (void) {CPU_INT32U cpu_clk_freq_hz;DEM_CR | (CPU_INT32U)DEM_CR_TRCENA; /* Enable Cortex-M3s DWT CYCCNT reg. */DWT_CYCCNT (CPU_INT32U)0u;DWT_CR | (CPU_INT32U)DWT_CR_CYCCNTENA;cpu_clk_freq_hz BSP_CPU_ClkFreq();CPU_TS_TmrFreqSet(cpu_clk_freq_hz); } #endif#if (CPU_CFG_TS_TMR_EN DEF_ENABLED) CPU_TS_TMR CPU_TS_TmrRd (void) {return ((CPU_TS_TMR)DWT_CYCCNT); } #endif#if (CPU_CFG_TS_32_EN DEF_ENABLED) CPU_INT64U CPU_TS32_to_uSec (CPU_TS32 ts_cnts) {CPU_INT64U ts_us;CPU_INT64U fclk_freq;fclk_freq BSP_CPU_ClkFreq();ts_us ts_cnts / (fclk_freq / DEF_TIME_NBR_uS_PER_SEC);return (ts_us); } #endif#if (CPU_CFG_TS_64_EN DEF_ENABLED) CPU_INT64U CPU_TS64_to_uSec (CPU_TS64 ts_cnts) {CPU_INT64U ts_us;CPU_INT64U fclk_freq;fclk_freq BSP_CPU_ClkFreq();ts_us ts_cnts / (fclk_freq / DEF_TIME_NBR_uS_PER_SEC);return (ts_us); } #endifbsp.h // bsp.h #ifndef __BSP_H__ #define __BSP_H__#include stm32f1xx_hal.hvoid BSP_Init(void);#endiflib_cfg.h 该文件中有一个宏定义 #define LIB_MEM_CFG_HEAP_SIZE 27u * 1024uSTM32F103C8T6的RAM仅有20KB因此需要将堆空间改小这里改成10KB #define LIB_MEM_CFG_HEAP_SIZE 10u * 1024umain.c 我在main.c中创建了两个任务LED0_Task控制B0端口的LED灯以1s为周期亮—灭LED1_Task控制B1端口的LED灯以3s为周期亮—灭。 /* Includes ------------------------------------------------------------------*/ #include main.h #include gpio.h/* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include includes.h /* USER CODE END Includes *//* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD *//* USER CODE END PTD *//* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* 任务优先级 */ #define LED0_TASK_PRIO 1 #define LED1_TASK_PRIO 2 //#define SEND_MSG_TASK_PRIO 3/* 任务堆栈大小 */ #define LED0_STK_SIZE 128 #define LED1_STK_SIZE 128 //#define SEND_MSG_STK_SIZE 128/* USER CODE END PD *//* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM *//* USER CODE END PM *//* Private variables ---------------------------------------------------------*//* USER CODE BEGIN PV */ //任务控制块 static OS_TCB LED0TaskTCB; static OS_TCB LED1TaskTCB;//任务堆栈 static CPU_STK LED0_TASK_STK[LED0_STK_SIZE]; static CPU_STK LED1_TASK_STK[LED1_STK_SIZE];/* 私有函数原形 --------------------------------------------------------------*/ static void AppTaskCreate(void); static void AppObjCreate(void); static void LED0_Task(void *p_arg); static void LED1_Task(void *p_arg); /* USER CODE END PV *//* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); /* USER CODE BEGIN PFP *//* USER CODE END PFP *//* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ /*** brief System Clock Configuration* retval None*/ 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_HSE;RCC_OscInitStruct.HSEState RCC_HSE_ON;RCC_OscInitStruct.HSEPredivValue RCC_HSE_PREDIV_DIV1;RCC_OscInitStruct.HSIState RCC_HSI_ON;RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLMUL RCC_PLL_MUL9;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_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV2;RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV1;if (HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_2) ! HAL_OK){Error_Handler();} }/* USER CODE END 0 *//*** brief The application entry point.* retval int*/ int main(void) {/* USER CODE BEGIN 1 */OS_ERR err;/* 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 */OSInit(err); /* USER CODE END SysInit *//* Initialize all configured peripherals */ // MX_GPIO_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE *//* 创建LED0任务 */OSTaskCreate((OS_TCB *)LED0TaskTCB, /* Create the start task */(CPU_CHAR *)LED0_Task,(OS_TASK_PTR ) LED0_Task,(void *) 0,(OS_PRIO ) LED0_TASK_PRIO,(CPU_STK *)LED0_TASK_STK[0],(CPU_STK_SIZE) LED0_STK_SIZE / 10,(CPU_STK_SIZE) LED0_STK_SIZE,(OS_MSG_QTY ) 0,(OS_TICK ) 0,(void *) 0,(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),(OS_ERR *)err);/* 创建LED1任务 */OSTaskCreate((OS_TCB *)LED1TaskTCB, /* Create the start task */(CPU_CHAR *)LED1_Task,(OS_TASK_PTR ) LED1_Task,(void *) 0,(OS_PRIO ) LED1_TASK_PRIO,(CPU_STK *)LED1_TASK_STK[0],(CPU_STK_SIZE) LED1_STK_SIZE / 10,(CPU_STK_SIZE) LED1_STK_SIZE,(OS_MSG_QTY ) 0,(OS_TICK ) 0,(void *) 0,(OS_OPT )(OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),(OS_ERR *)err);/* 启动多任务系统控制权交给uC/OS-III */OSStart(err); /* Start multitasking (i.e. give control to uC/OS-III). */}/*** 函数功能: 启动任务函数体。* 输入参数: p_arg 是在创建该任务时传递的形参* 返 回 值: 无* 说 明无*/ static void LED0_Task (void *p_arg) {OS_ERR err;(void)p_arg;BSP_Init(); /* Initialize BSP functions */CPU_Init();Mem_Init(); /* Initialize Memory Management Module */#if OS_CFG_STAT_TASK_EN 0uOSStatTaskCPUUsageInit(err); /* Compute CPU capacity with no task running */ #endifCPU_IntDisMeasMaxCurReset();AppTaskCreate(); /* Create Application Tasks */AppObjCreate(); /* Create Application Objects */while (DEF_TRUE){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET);OSTimeDlyHMSM(0, 0, 0, 500, OS_OPT_TIME_HMSM_STRICT, err);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET);OSTimeDlyHMSM(0, 0, 0, 500, OS_OPT_TIME_HMSM_STRICT, err);}/* USER CODE END 3 */ }static void LED1_Task (void *p_arg) {OS_ERR err;(void)p_arg;BSP_Init(); /* Initialize BSP functions */CPU_Init();Mem_Init(); /* Initialize Memory Management Module */#if OS_CFG_STAT_TASK_EN 0uOSStatTaskCPUUsageInit(err); /* Compute CPU capacity with no task running */ #endifCPU_IntDisMeasMaxCurReset();AppTaskCreate(); /* Create Application Tasks */AppObjCreate(); /* Create Application Objects */while (DEF_TRUE){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);OSTimeDlyHMSM(0, 0, 1, 500, OS_OPT_TIME_HMSM_STRICT, err);HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);OSTimeDlyHMSM(0, 0, 1, 500, OS_OPT_TIME_HMSM_STRICT, err);}/* USER CODE END 3 */ }/* USER CODE BEGIN 4 */ /*** 函数功能: 创建应用任务* 输入参数: p_arg 是在创建该任务时传递的形参* 返 回 值: 无* 说 明无*/ static void AppTaskCreate (void) {}/*** 函数功能: uCOSIII内核对象创建* 输入参数: 无* 返 回 值: 无* 说 明无*/ static void AppObjCreate (void) {} /* USER CODE END 4 *//*** brief This function is executed in case of error occurrence.* retval None*/ 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****/ OSTimeDlyHMSM函数是延时函数括号中的四个数字表示延迟时长从左至右分别为时、分、秒、毫秒。 实验结果 绿色接B0红色接B1 参考文章 STM32F103基于HAL库移植uC/OS-III_ucos iii hal移植到正点原子-CSDN博客 STM32F103C8移植uCOSIIIHAL库_stm32f103移植ucosiii-CSDN博客
http://www.w-s-a.com/news/326506/

相关文章:

  • 视频做网站长沙网站制作平台
  • js网站建设北京seo公司优化网络可见性
  • 付款网站源码建网站卖东西
  • 用php做的录入成绩的网站wordpress等级插件
  • 网站运营优化方案广西桂林公司
  • 快递网站策划怎么做ppt长春建设信息网站
  • 做服装搭配图的网站有哪些经营一个网站要怎么做
  • 呼市品牌网站建设那家好增城住房和建设局网站
  • 网站首页布局设计代码太仓网站开发建设服务
  • 学校网站建设与管理porto wordpress模板
  • 余姚做网站公司网站建设有哪些基本流程
  • 门户网站建设的报价百度医生在线问诊
  • 北京公司注册在哪个网站浏览器打开网址404
  • 廊坊做网站公司绣花图案设计网站
  • 网站空间租用哪个好购物网站建设模板图片
  • 建设银行包头分行网站泰安网签成交量最新
  • 手机微网站与微官网现在去成都需要隔离吗
  • 学校的二级网站怎么建设深圳企业网站制作设计
  • 自己做qq头像静态的网站网站建设是属于软件开发费吗
  • 举报网站建设做网站之前的工作
  • 用QQ群做网站排名个人网站制作协议
  • 做茶叶网站的素材天津网站营销
  • 网站设计建设流程图微信端的网站开发python
  • 湖州网站seo优化网站改域名备案
  • dedecms怎么制作网站合肥电商网站开发
  • 网站开发通用流程图做flash的网站
  • 营销型网站有哪些平台网站建设藤设计
  • 网站需求分析网站建设美食网站建设多少钱
  • 有专门做网站的吗建德网站
  • 做网站要买服务器吗单页设计思路