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

网站标题做参数广州市建设工程交易中心网站

网站标题做参数,广州市建设工程交易中心网站,河北省住房城乡建设局网站,网页制作教程视频简单继上一篇笔记#xff0c;搭建好STM32的编译框架#xff0c;编译出来的OHOS_Image.bin并不能跑不起来。 今天要在bsp里面添加一些代码#xff0c;让程序能跑起来。 先从裸机点亮LED灯开始#xff0c;准备以下3个文件:startup和system文件可以用OHOS官方代码。 /device/boar…继上一篇笔记搭建好STM32的编译框架编译出来的OHOS_Image.bin并不能跑不起来。 今天要在bsp里面添加一些代码让程序能跑起来。 先从裸机点亮LED灯开始准备以下3个文件:startup和system文件可以用OHOS官方代码。 /device/board/demo/demo_board/liteos_m/bsp/src/main.c /device/board/demo/demo_board/liteos_m/bsp/src/system_stm32f4xx.c /device/board/demo/demo_board/liteos_m/bsp/src/startup_stm32f407xx.s main.c里面做最简单的初始化由于官方soc提供的st库是HAL库因此用HAL库点亮LED。 #include stm32f4xx_hal.hvoid HAL_MspInit(void) {__HAL_RCC_SYSCFG_CLK_ENABLE();__HAL_RCC_PWR_CLK_ENABLE(); }void SystemClock_Config(void) {RCC_OscInitTypeDef RCC_OscInitStruct {0};RCC_ClkInitTypeDef RCC_ClkInitStruct {0};__HAL_RCC_PWR_CLK_ENABLE();__HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSE;RCC_OscInitStruct.HSEState RCC_HSE_ON;RCC_OscInitStruct.PLL.PLLState RCC_PLL_ON;RCC_OscInitStruct.PLL.PLLSource RCC_PLLSOURCE_HSE;RCC_OscInitStruct.PLL.PLLM 25;RCC_OscInitStruct.PLL.PLLN 336;RCC_OscInitStruct.PLL.PLLP RCC_PLLP_DIV2;RCC_OscInitStruct.PLL.PLLQ 7;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_PLLCLK;RCC_ClkInitStruct.AHBCLKDivider RCC_SYSCLK_DIV1;RCC_ClkInitStruct.APB1CLKDivider RCC_HCLK_DIV4;RCC_ClkInitStruct.APB2CLKDivider RCC_HCLK_DIV2;HAL_RCC_ClockConfig(RCC_ClkInitStruct, FLASH_LATENCY_5); }//我的板子上有个LED连接在PA4 static void LED_Blink(void) {GPIO_InitTypeDef GPIO_InitStruct {0};__HAL_RCC_GPIOA_CLK_ENABLE();GPIO_InitStruct.Pin GPIO_PIN_4;GPIO_InitStruct.Mode GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull GPIO_PULLUP;GPIO_InitStruct.Speed GPIO_SPEED_FREQ_VERY_HIGH;GPIO_InitStruct.Alternate 0;HAL_GPIO_Init(GPIOA, GPIO_InitStruct);while(1){HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET);HAL_Delay(500);HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);HAL_Delay(500);} }int main(void) {HAL_Init();SystemClock_Config();LED_Blink(); }这段代码初始化LED引脚然后500ms改变1次LED状态。 这里面用到HAL_Delay函数是由Systick中断驱动的延时函数也考验中断能不能正常运行。 文件准备好了还要把文件加入到编译工程里 修改/home/openharmony/device/board/demo/demo_board/liteos_m/bsp/BUILD.gn 把源码路径添加到sources变量里面。 # /home/openharmony/device/board/demo/demo_board/liteos_m/bsp/BUILD.gn # kerndev.blog.csdn.netimport(//kernel/liteos_m/liteos.gni)module_name get_path_info(rebase_path(.), name) kernel_module(module_name) {sources [src/startup_stm32f407xx.s,src/system_stm32f4xx.c,src/main.c,] }config(public) {defines [STM32F407xx,STM32F40_41xxx,]include_dirs [include,//device/soc/st/stm32f4xx/sdk/Core/Inc,//device/soc/st/stm32f4xx/sdk/Drivers/STM32F4xx_HAL_Driver/Inc,//device/soc/st/stm32f4xx/sdk/Drivers/CMSIS/Device/ST/STM32F4xx/Include,]ldflags [-Wl,-T rebase_path(ld/STM32F407IG_FLASH.ld),-Wl,-u_printf_float,]libs [c,m,nosys,] } 然后开始编译编译通过把OHOS_Image.bin下载到板子里看看LED灯亮不亮。 运气好的话LED正常闪烁。 下载程序后如果LED没有闪烁需要排查以下问题 1.程序链接地址错误。 在STM32F407IG_FLASH.ld文件里定义了FLASH和RAM地址没有bootloader的情况下FLASH起始地址应该是0x080000000。 ...... /* Specify the memory areas */ MEMORY { RAM (xrw) : ORIGIN 0x20000000, LENGTH 128K CCMRAM (xrw) : ORIGIN 0x10000000, LENGTH 64K FLASH (rx) : ORIGIN 0x8000000, LENGTH 512K } ...... 2.中断向量表没有链接到BIN起始位置。 在STM32F407IG_FLASH.ld文件里定义了中断向量表的区块.isr_vector需要检查startup.s里面的向量表定义是否定义在.isr_vector代码段。 ...... /* Define output sections */ SECTIONS {/* The startup code goes first into FLASH */.isr_vector :{. ALIGN(4);KEEP(*(.isr_vector)) /* Startup code */. ALIGN(4);} FLASH...... 3.中断向量表重映射地址错误。 在system_stm32f4xx.c文件里SystemInit函数会修改中断向量表位置取决于USER_VECT_TAB_ADDRESS宏定义。 void SystemInit(void) {/* FPU settings ------------------------------------------------------------ */ #if (__FPU_PRESENT 1) (__FPU_USED 1)SCB-CPACR | ((3UL 10*2)|(3UL 11*2)); /* set CP10 and CP11 Full Access */ #endif#if defined (DATA_IN_ExtSRAM) || defined (DATA_IN_ExtSDRAM)SystemInit_ExtMemCtl(); #endif /* DATA_IN_ExtSRAM || DATA_IN_ExtSDRAM *//* Configure the Vector Table location -------------------------------------*/ #if defined(USER_VECT_TAB_ADDRESS)SCB-VTOR VECT_TAB_BASE_ADDRESS | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */ #endif /* USER_VECT_TAB_ADDRESS */ } 4.中断函数SysTick_Handler配置错误。 在startup_stm32f407xx.s文件里找看中断向量表的定义其中SysTick_Handler位置写的是哪个函数为了HAL库正常使用可以将其修改为HAL_IncTick .section .isr_vector,a,%progbits.type g_pfnVectors, %object.size g_pfnVectors, .-g_pfnVectorsg_pfnVectors:.word _estack.word Reset_Handler.word HalExcNMI.word HalExcHardFault.word HalExcMemFault.word HalExcBusFault.word HalExcUsageFault.word 0.word 0.word 0.word 0.word SVC_Handler.word DebugMon_Handler.word 0.word HalPendSV.word HAL_IncTick //之前是OsTickHandler 5.闪烁频率不正常 检查System_Config()函数的时钟配置根据板子上的晶振频率修改PLL设置。 检查system_stm32f4xx.c里面SystemCoreClock的值是否和运行频率一致。
http://www.dnsts.com.cn/news/171257.html

相关文章:

  • 网站建设毕业设计摘要网站的关于我们怎么做
  • 克拉玛依市住房和建设局网站网站建设专用图形库
  • 网站推广的途径和要点搜索引擎优化包括哪些内容
  • 温州专业网站开发网站设计武昌网站建设哪家便宜
  • 网站建设劳务合同沧州头条最新新闻
  • 网站建设首先哈尔滨网站建设30t
  • 湖北公司响应式网站建设推荐旅社网站怎么建立
  • 湖南企业网站制作台州做网站那家好
  • 怎么自己做刷赞网站做网站的边框
  • 公司做网站的费用南京关键词优化软件
  • 网站设计需要考虑的基本原则广东企业网站模板定制
  • 西宁网站建设服务公司网页qq登陆保护功能怎么关闭
  • php 网站管理系统个人怎么做淘宝客网站
  • 帮传销做网站违法吗wordpress语言设置为繁体字
  • 广西建设厅网站首页怎么创建网页的快捷方式
  • 主体负责人和网站负责人不能是同一个人西安专业网站建设公司哪家好
  • 西安城乡建设网站wordpress调用discuz
  • 免费建设在线商城的网站网站外链建设的八大基本准则
  • 做网站买什么空间wordpress 修订
  • 网站做排名有用吗朝阳区网站建设公司
  • 北京 顺义 网站制作虚拟主机搭建网站源码
  • 布布网 wordpressseo网站的优化方案
  • 模板板网站快速开发平台 免费开源
  • 深圳app开发公司哪家比较好wordpress seo怎么做
  • 怎么做cc网站本网站维护升级
  • 嘉兴网站快速排名优化虚拟主机网站
  • 中山骏域网站建设专家网站建设合同用贴印花税吗
  • 大学网站建设专业伊春网络建站公司
  • 做网站时如何建立栅格大学生创新创业点子
  • 男人和女人做不可描述的事情的网站新手用jsp做网站