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

中国钓鱼网站大全线上分销平台

中国钓鱼网站大全,线上分销平台,国内最专业的设计网站建设,广州海珠区好玩的地方前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程#xff0c;下载了 uC-OS2 V2.93 的源码#xff0c;并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器#xff08;Systick#xff09;与 PendSV_Handler#xf…前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程下载了 uC-OS2 V2.93 的源码并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器Systick与 PendSV_Handler创建 用户任务让 uC-OS2 启动并运行起来 开发环境 win10 64位 Keil uVision5MDK V5.36 uC-OS2 V2.93 开发板NUCLEO-L476RG MCU 为 STM32L476RG STM32CubeMX 6.9.1用于生成 STM32的裸机工程 创建用户任务 这里创建一个 led 闪烁的任务在 main.c 中实现 #include main.h #include led.h #include app_cfg.h #include os.hUART_HandleTypeDef huart2;void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART2_UART_Init(void);#define TASK_LED_PRIO 5 #define TASK_LED_STACK_SIZE 128 static OS_STK task_led_stack[TASK_LED_STACK_SIZE];static void task_led_entry(void *p_arg) {while (1){led_grn_ctrl(1);OSTimeDly(1000);led_grn_ctrl(0);OSTimeDly(1000);} }void led_task_init(void) {OSTaskCreate(task_led_entry,(void *)0, task_led_stack[TASK_LED_STACK_SIZE-1], TASK_LED_PRIO); }HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {return HAL_OK; }/*** brief The application entry point.* retval int*/ int main(void) {HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART2_UART_Init();OSInit();led_task_init();OS_CPU_SysTickInitFreq(80000000);OSStart();return 0; }适配 Systick 工程编译下载后发现 任务没有正常调度起来原因是没有适配 uC-OS2 首先需要开启 uC-OS2 的系统定时器也就是系统的心跳 uC-OS2 V2.93 有 Systick 的初始化函数uC-OS2\Ports\ARM-Cortex-M\ARMv7-M\os_cpu_c.cOS_CPU_SysTickInitFreq 备注 STM32的 HAL库默认在 HAL_Init 中通过 HAL_InitTick 初始化了 1ms 一次的 Systick 这里首先重新 STM32 HAL 库的 HAL_InitTick默认是个 weak 函数可以重新这里重写为空也就是不通过 STM32 HAL 库初始化 Systick HAL_StatusTypeDef HAL_InitTick(uint32_t TickPriority) {return HAL_OK; }通过 OS_CPU_SysTickInitFreq(80000000); 初始化 Systick 初始化了 Systick就要处理一下 Systick 的中断函数 SysTick_Handler需要调用 uC-OS2 的 OS_CPU_SysTickHandler修改文件 stm32l476_ucosii_led\Core\Src\stm32l4xx_it.c #include app_cfg.h #include os_cpu.hvoid SysTick_Handler(void) {OS_CPU_SysTickHandler();HAL_IncTick(); }以上的修改 Systick 初始化Systick 的中断可以周期性的触发 如果发现 Systick 没有按1毫秒触发一次中断如延时1秒发现时间是 10秒需要修改 uC-OS2\Cfg\Template\os_cfg.h修改 OS_TICKS_PER_SEC 改为 #define OS_TICKS_PER_SEC 1000u也就是 1毫秒触发一次Systick 中断 适配 PendSV_Handler 像 STM32 系列的芯片默认通过 PendSV_Handler 中断进行任务的切换修改文件 stm32l476_ucosii_led\Core\Src\stm32l4xx_it.c 中的 PendSV_Handler void PendSV_Handler(void) {OS_CPU_PendSVHandler(); }注意 stm32l476_ucosii_led\Core\Src\stm32l4xx_it.c 中 包含头文件 #include app_cfg.h #include os_cpu.h编译烧写 编译烧写后发现开发板的 LED 正常的闪烁 uC-OS2 系统移植初步完成任务切换、系统延时等正常工作了 可以点击 Keil MDK5 的【Debug】调试按钮进入 Debug 调试模式加入【断点】单步或者连续运行观察 uC-OS2 的任务调度、切换用户例程的执行等 调试说明 如果调试发现【断点】不起作用需要调整 Keil MDK5 的编译优化等级改为 O0 试试 通过软件调试可以熟悉整个系统的初始化、启动、运行流程 小结 本篇通过适配 uC-OS2 的两个关键的适配 系统滴答定时器与 PendSV 系统异常实现 uC-OS2 的正常启动与运行 uC-OS2 移植起来相对简单后面继续研究 uC-OS2如增加串口输出、移植 Shell 等
http://www.dnsts.com.cn/news/85816.html

相关文章:

  • 济南建设企业网站wordpress图片美化
  • 网站推广有哪些常用的方法做h5的网站的区别
  • wordpress id不连续seo 网站优化
  • 唐朝网站免费seo课程
  • 楚雄市网站建设公司wordpress 表单js改变
  • 网站分几类梦璇帮我wordpress
  • 高端网站建设磐石网络好有保障的广州网站建设
  • 网站制作效果好网络设计师的发展前景
  • vps 网站发布江都住房和建设局网站
  • 广西城市建设学校学生网站南宁网站设计推广
  • 做网站模板的软件公路建设项目可行性研究报告编制办法哪个网站查最新版
  • 做个公司网站产品服务展示型网站有哪些
  • 网站留言自动短信提醒wordpress商城主题哪个好
  • 专业平台网站建设上海做网站比较好的
  • 广州建造网站公司网站建设竞价托管服务
  • cms网站搭建权重2的网站
  • 响应式网站建设制作需要注意什么推荐网站建设话术
  • 自己怎么建个网站赚钱网站制作 苏州
  • 翡翠网站建设ppt苍溪县代码是多少
  • 做汽车租赁主要的网站邢台企业做网站哪家好
  • 南通网站群建设沈阳男科医院十大排名
  • 百度浏览器网站入口小程序公司
  • 源码做微信电影网站旅游地网站制作
  • 长沙网站开发智溧阳网站建设公司
  • 武功网站开发公司推广渠道
  • 网站建设律师临海外发加工网
  • 此网站域名即将过期小程序开发流程步骤
  • 江苏建设外贸公司网站广州互帮物流哪家公司做的网站
  • 建筑企业网站有哪些政务信息网站建设研究
  • 邯郸网站制作费用国建设文化艺术协会网站