海淀视频网站建设seo需要培训才能找到工作吗

pingmian/2026/1/27 1:43:59/文章来源:
海淀视频网站建设,seo需要培训才能找到工作吗,wordpress 本机模拟,网站建设汽车后市场考虑到设备部署到现场后有可能需要进行软件升级#xff0c;之前做过PIC系列单片机的升级#xff0c;现在想做个国民技术N32G031系列Cortex-M0内核的单片机IAP方案。 因为国民技术系列单片机在很多大程度上都模仿了STM32#xff0c;所以我想其升级方案极有可能差不多。于是在…考虑到设备部署到现场后有可能需要进行软件升级之前做过PIC系列单片机的升级现在想做个国民技术N32G031系列Cortex-M0内核的单片机IAP方案。 因为国民技术系列单片机在很多大程度上都模仿了STM32所以我想其升级方案极有可能差不多。于是在网上下载了STM32官方使用YMODEM协议实现的IAP下载地址STSW-STM32008 - STM32F10xxx in-application programming using the USART (AN2557) - STMicroelectronics使用野火的STM32开发实测过是没有问题的于是在它的基础上进行修改移植到N32G031系列单片机中来经过一番折腾还是搞定了现在把相关内容分享下另外资源可以在以下链接中下载无需积分。 【免费】国民技术N32G031使用YMODEM协议实现IAP资源-CSDN文库 另外关于YMODEM协议及secureCRT的使用可以参考以下链接 stm32 Bootloader设计(YModem协议)-CSDN博客 关于secureCRT的破解方法请参考以下链接 尝试SecureCRT_securecrt issue date-CSDN博客 主要介绍IAP程序的main.c文件代码如下 /*** file main.c* author Power* version V1.0.1** copyright Copyright (c) 2023, DS.*/ /*MIPS的全称是Million Instructions Per Second每秒百万指令西方或者国际上的计量体系中1M(兆)100万1000000Mhz是指单片机CPU的主频兆赫兹。单条指令执行时间STM32F10X单片机在主频为72MHz下C语言程序执行一条指令需要的时间可认为10ns~100ns。国民技术系列N32G031 MCU以主频48MHz为例这里估算的C语言执行一条指令的时间约为20ns-200ns */#include main.h #include common.h #include ymodem.h#define COMn 2 #define RS485_GPIOx_CLK RCC_APB2_PERIPH_GPIOF //peripheral adress #define RS485_GPIO_PIN GPIO_PIN_6 //pin address #define RS485_GPIOx GPIOF //port address #define RS485_L() GPIO_ResetBits(RS485_GPIOx, RS485_GPIO_PIN)//RECEIVE_ mode #define RS485_H() GPIO_SetBits(RS485_GPIOx, RS485_GPIO_PIN)//TRANSMIT modetypedef enum {COM1 0,COM2 1 } COM_TypeDef; /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ extern pFunction Jump_To_Application; extern uint32_t JumpAddress; uint16_t led_cnt 0; volatile uint8_t Flag_1ms; //1 milli-second timeout flag uint8_t cTemp 10; //for RS485 mode switching delay/* Private function prototypes -----------------------------------------------*/ static void IAP_Init(void); void RCC_Configuration(void); void GPIO_Configuration(void);const uint16_t COM_TX_PIN[COMn] {EVAL_COM1_TX_PIN, EVAL_COM2_TX_PIN}; const uint16_t COM_RX_PIN[COMn] {EVAL_COM1_RX_PIN, EVAL_COM2_RX_PIN}; const uint32_t COM_TX_PORT_CLK[COMn] {EVAL_COM1_TX_GPIO_CLK, EVAL_COM2_TX_GPIO_CLK}; const uint32_t COM_RX_PORT_CLK[COMn] {EVAL_COM1_RX_GPIO_CLK, EVAL_COM2_RX_GPIO_CLK}; const uint32_t COM_USART_CLK[COMn] {EVAL_COM1_CLK, EVAL_COM2_CLK}; GPIO_Module* COM_TX_PORT[COMn] {EVAL_COM1_TX_GPIO_PORT, EVAL_COM2_TX_GPIO_PORT}; GPIO_Module* COM_RX_PORT[COMn] {EVAL_COM1_RX_GPIO_PORT, EVAL_COM2_RX_GPIO_PORT}; USART_Module* COM_USART[COMn] {EVAL_COM1, EVAL_COM2};/* Private functions ---------------------------------------------------------*/ /** *name: RS485_Configuration *description: RS485 GPIO initialization *params: none *return: none */ void RS485_Configuration(void) {GPIO_InitType GPIO_InitStructure;RCC_EnableAPB2PeriphClk(RS485_GPIOx_CLK, ENABLE);/* -2- Configure GPIOx_PIN in output push-pull mode */GPIO_InitStruct(GPIO_InitStructure);GPIO_InitStructure.Pin RS485_GPIO_PIN;GPIO_InitStructure.GPIO_Mode GPIO_MODE_OUTPUT_PP;GPIO_InitStructure.GPIO_Speed GPIO_SPEED_HIGH;GPIO_InitPeripheral(RS485_GPIOx, GPIO_InitStructure);GPIO_ResetBits(RS485_GPIOx, RS485_GPIO_PIN); }/** *name: Process_1MS *description: 1 milli-second timeout process *params: none *return: none */ void Process_1MS(void) {if (Flag_1ms 0){return;}Flag_1ms 0;if (led_cnt % 500 0) //LED toggle to see whether the timer works correctly.{GPIO_WriteBit(GPIOF, GPIO_PIN_7, (Bit_OperateType)(1 - GPIO_ReadOutputDataBit(GPIOF, GPIO_PIN_7)));}led_cnt;if (led_cnt 60000){led_cnt 0;} }/** *name: RS485_Mode_Switching *description: switch the RS485 work mode *params: mode: 1: receive, 0: transmit *return: none */ void RS485_Mode_Switching(uint8_t mode) {cTemp 10;if(mode){RS485_L();}else{RS485_H();} while (cTemp-- ! 0); }/*** brief Main program.* param None* retval None*/ int main(void) {/* Flash unlock */FLASH_Unlock();/* Initialize Key Button mounted on N32G031-EVAL board *///N32_EVAL_PBInit(BUTTON_KEY, BUTTON_MODE_GPIO);/* Test if Key push-button on N32G031 Board is pressed *///if (N32_EVAL_PBGetState(BUTTON_KEY) 0x00) if (1){/* If Key is pressed *//* Execute the IAP driver in order to re-program the Flash */RCC_Configuration();GPIO_Configuration();RS485_Configuration();TIM3_Configuration();IAP_Init(); RS485_Mode_Switching(0);SerialPutString(\r\n);SerialPutString(\r\n (C) COPYRIGHT 2023 DS Power Supply );SerialPutString(\r\n );SerialPutString(\r\n In-Application Programming (Version 1.0.0) );SerialPutString(\r\n );SerialPutString(\r\n By POWER );SerialPutString(\r\n);SerialPutString(\r\n\r\n);Main_Menu();}/* Keep the user application running */else{/* Test if user code is programmed starting from address ApplicationAddress */if (((*(__IO uint32_t*)ApplicationAddress) 0x2FFE0000) 0x20000000){/* Jump to user application */JumpAddress *(__IO uint32_t*)(ApplicationAddress 4);Jump_To_Application (pFunction) JumpAddress;/* Initialize user applications Stack Pointer */__set_MSP(*(__IO uint32_t*) ApplicationAddress);Jump_To_Application();}}while (1){} }/*** brief Configures COM port.* param COM: Specifies the COM port to be configured.* This parameter can be one of following parameters: * arg COM1* arg COM2 * param USART_InitStruct: pointer to a USART_InitTypeDef structure that* contains the configuration information for the specified USART peripheral.* retval None*/ void IAP_COMInit(COM_TypeDef COM, USART_InitType* USART_InitStruct) {GPIO_InitType GPIO_InitStructure;/* Enable GPIO clock */ RCC_EnableAPB2PeriphClk(COM_TX_PORT_CLK[COM] | RCC_APB2_PERIPH_AFIO, ENABLE);/* Enable UART clock */if (COM COM1){RCC_EnableAPB2PeriphClk(COM_USART_CLK[COM], ENABLE); }else{RCC_EnableAPB1PeriphClk(COM_USART_CLK[COM], ENABLE);}GPIO_InitStruct(GPIO_InitStructure);/* Configure USART Tx as alternate function push-pull */GPIO_InitStructure.GPIO_Mode GPIO_MODE_AF_PP;GPIO_InitStructure.Pin COM_TX_PIN[COM];GPIO_InitStructure.GPIO_Alternate GPIO_AF4_USART1;//alternate functionGPIO_InitPeripheral(COM_TX_PORT[COM], GPIO_InitStructure); /* Configure USART Rx as input floating */ GPIO_InitStructure.Pin GPIO_PIN_10;GPIO_InitStructure.GPIO_Alternate GPIO_AF4_USART1;//alternate functionGPIO_InitPeripheral(COM_RX_PORT[COM], GPIO_InitStructure);/* USART configuration */USART_Init(COM_USART[COM], USART_InitStruct);/* Enable USART */USART_Enable(COM_USART[COM], ENABLE); }/*** brief Initialize the IAP: Configure RCC, USART and GPIOs.* param None* retval None*/ void IAP_Init(void) {USART_InitType USART_InitStructure;/* USART resources configuration (Clock, GPIO pins and USART registers) ----*//* USART configured as follow:- BaudRate 115200 baud- Word Length 8 Bits- One Stop Bit- No parity- Hardware flow control disabled (RTS and CTS signals)- Receive and transmit enabled*/USART_InitStructure.BaudRate 115200;USART_InitStructure.WordLength USART_WL_8B;USART_InitStructure.StopBits USART_STPB_1;USART_InitStructure.Parity USART_PE_NO;USART_InitStructure.HardwareFlowControl USART_HFCTRL_NONE;USART_InitStructure.Mode USART_MODE_RX | USART_MODE_TX;IAP_COMInit(COM1, USART_InitStructure); }/*** brief Configures the different system clocks.*/ static void RCC_Configuration(void) {//PCLK1 HCLK/4, set the prescaler of the APB1 clock and timer3 uses APB1 clockRCC_ConfigPclk1(RCC_HCLK_DIV4);//Enable GPIO clocksRCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOA | RCC_APB2_PERIPH_AFIO | RCC_APB2_PERIPH_GPIOF, ENABLE);//TIM3 clock enableRCC_EnableAPB1PeriphClk(RCC_APB1_PERIPH_TIM3, ENABLE); }/** *name: GPIO_Configuration *description: IO initialization *params: none *return: none */ static void GPIO_Configuration(void) {GPIO_InitType GPIO_InitStructure;GPIO_InitStruct(GPIO_InitStructure);//PF7: LEDGPIO_InitStructure.Pin GPIO_PIN_7;GPIO_InitStructure.GPIO_Mode GPIO_MODE_OUTPUT_PP;GPIO_InitPeripheral(GPIOF, GPIO_InitStructure);//set the default IO levelGPIO_SetBits(GPIOF, GPIO_PIN_7); }#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*/ void assert_failed(const uint8_t* expr, const uint8_t* file, uint32_t line) {/* 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) *//* Infinite loop */while (1){} }#endif/* 关于补码的简洁概括正数本身就是补码。负数就用它的正数减一取反即可得到补码。如已知9 的二进制是0000 1001。下面求9 补码先减一0000 1001 - 1 0000 1000再取反1111 0111。所以有9 补码 1111 0111。这不就完了吗简不简单 意不意外如果把一个值赋给一个有符号类型如果补码的最高位是1则是负数还原成实际的负数值的步骤是1、先按位取反2、再加1例如int表示32位有符号int a -552305;(按正数552305的补码先减一再按位取反得到-552305二进制补码是1111 1001 0010 1000 1111)short表示16位无符号short c (short)a;由于short最大只有16位因此高4位被忽略剩下1001 0010 1000 1111又由于赋值给short所以最高位表示符号位这里是1表示负数则将1001 0010 1000 1111除符号位外按位取反再加1得到1110 1101 0111 0001最终的结果就是除符号位外的数据110 1101 0111 0001-28017 *//*** }*//*** }*/其实也很简单主要就是串口和RS485相关外设的初始化串口这里没有使用中断的方法。 外设初始化完成后就会进入主菜单根据用户输入的值进行不同的操作剩下就是YMODEM协议的理解。后面有空准备自己做一个上位机来实现YMODEM协议因为自己有逻辑分析仪可以抓取到实际传输的数据。 我刚开始调试的时候一直出现在secureCRT中输入菜单编号后单片机没有反应的情况仔细检测了代码发现和STM32的也差不多没有什么问题。于是使能串口的接收中断我测试在secureCRT中选择菜单后串口收到的是什么后来查看确实有问题无论secureCRT中输入什么内容打印出来的都是两个字节有时候是0xFD 0xFF有时又是0xF9 0xFF的感觉莫名其妙的。后来想起来之前使用N32G031串口发送有时少一字节的问题特别是在RS485通信中最容易出现再查看本项目的下面这个函数 /*** brief Print a character on the HyperTerminal* param c: The character to be printed* retval None*/ void SerialPutChar(uint8_t c) {USART_SendData(EVAL_COM1, c);while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXDE) RESET); //while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXDE) RESET)//{//} } 我忽然想起来了还有一个非常重要的语句没有调用那就是 while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TXC) RESET); 解释如下 /*关于串口直接发送正常而485出现少发1字节的问题 我看我的代码发现我的检测标志位是USART_FLAG_TXDE发送寄存器空。 以前一直用这个写也没啥问题但是现在出现了丢失字节我就怀疑可能是寄存器空 但是数据还没有完全发出注意当你用USART_FLAG_TXDE标志位去认为已经发完并去控制RTS引脚的时候485芯片会从发送转接收 导致如果有字节没有发完就不发了。 因此我们只需要再加一个标志位检测就好。 USART_FLAG_TXC表示数据发送完成只有当它置1才表示最后一个数据发送结束了。加了这个标志位检测后RS485的收发就正常工作了。 另外关于用户应用程序的中断向量表偏移的问题除了在MDK中设置ROM的偏移值外还要设置中断向量表。N32G031系列没有像STM32系列那样有类似SCB-VTOR的成员设置中断向量表的偏移IAP接收完bin文件后用户程序总是不执行。我在网上搜索终于找到了一篇文章专门介绍这个的 【精选】国民技术N32G030F6S7使用ymodem协议更新固件_n32g452 ymodem远程升级-CSDN博客 感谢这位博主要不然我不知道还要折腾多久。这个芯片厂家应该要把资料准备得齐全一些尤其是这种关键的内容。 下面是在secureCRT中主菜单和发送完成bin后的界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/85331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平度市建设局网站泰安招聘网站有哪些

图片在我以前的文章(这里是第一[1]篇和第二篇[2])中,我展示了ElasticSearch作为电子商务中的全文搜索引擎的使用,一些高级配置的设置和使用以及products包含所有内容的索引的创建保存的产品。出于演示目的,我们使用Bog…

电子商务网站建设有管理课后答案公司网站未备案

1.简介 上一篇中已经将其的理论知识介绍了一下,这一篇就带着大家一步一步的把上一篇介绍的理论知识实践一下,然后再说一下如何创建高级web测试计划。 2.网络计划实战 通过上一篇的学习,将其分类为: (1)不需…

网站建设服务费如何做会计分录益韧建筑培训网

一、下载安装 https://code.visualstudio.com/ 二、安装插件 三、使用 ①、创建一个空目录 ②、利用vscode工具打开该目录 ③、将该目录设置为工作区 在工作区中添加文件,还可以进行浏览器访问(提前安装了Live Server插件) 为工具…

莱芜百度网站制作wordpress如何去掉显示文章的分类

自定义ui理念 利用JavafX / FXML的声明性设计模式,并允许用户仅通过使用例如SceneBuilder打开某个视图即可重新定制布局或添加新控件,甚至根据用户需要更改样式,从而无需任何编码即可自定义某个视图。 FXML文件 CSS基本上可以放置在通过URL可…

做网站版权所有怎么写公共体育课程网站建设

前言 python中进行面向对象编程,当在子类的实例中调用父类的属性时,由于子类的__init__方法重写了父类的__init__方法,如果在子类中这些属性未经过初始化,使用时就会出错。 例如以下的代码: class A(object): def __init__(self):…

长沙3合1网站建设公司免费下载安装app

目录 一、仓库配置邮箱与用户名 二、本地仓库提交流程 一、仓库配置邮箱与用户名 【Git】Linux服务器Centos环境下安装Git与创建本地仓库_centos git仓库搭建_1373i的博客-CSDN博客https://blog.csdn.net/qq_61903414/article/details/131260033?spm1001.2014.3001.5501 在…

如何进行网站营销杭州软件开发的公司

选品思维:低频VS高频 一个的商超,假设有50个左右的品类,每个品类下有2到10个不等的商品。然而如此庞大的商品,并非所有都是高频消费品。 结合自身日常的消费习惯,对于高频和低频的区分并不难。一般大型家电、高端礼盒…

网站建设及服务招标公告网络营销是学什么的

机缘 因公司需要开发密集架相关项目,涉及相关项目需求设计,市场上并未有相关动画效果流出,基于设计开发相关需求 多列密集架情况: 密集架固定列在最左侧密集架固定列在最右侧密集架固定列在最中间收获 最终完成初步效果 实例展示: android密集架移动效果 部分核心代码…

专业摄影网站那些网站可以做文案兼职

linux命令之sar 1.sar介绍 linux命令sar是用来从各个方面对系统的活动进行监控报告&#xff0c;包括&#xff1a;CPU使用率&#xff0c;内存使用&#xff0c;磁盘I/O等 2.sar用法 sar [参数] [ <时间间隔> [ <次数> ] ] sar参数 参数说明-A显示系统所有资源设备…

珠海移动网站建设报价公司网站建设手续

大家好&#xff0c;我是小悟 1、问题背景 玩过支付宝生态的&#xff0c;或许就有这种感受&#xff0c;如果收到投诉单&#xff0c;不会通知到手机端&#xff0c;只会在支付宝商家后台-账号中心-安全中心-消费者投诉-支付交易投诉那里显示。那你能一直盯着电脑看吗&#xff1f;…

运城哪里做网站无锡网站制作优化推广公司

设置git代理 $ git config --global http.https://github.com.proxy socks5://127.0.0.1:7890 git config --global https.https://github.com.proxy socks5://127.0.0.1:7890导入cmake直接构建 win32 debug v143 编译opus Build started...

零基础做网站效果型网站建设

二分查找是一种在有序数组中查找特定元素的算法。其基本思想是通过不断地将数组分成两半并排除其中一半来缩小搜索范围。 二分查找算法的C语言实现 #include <stdio.h> // 二分查找函数 int binarySearch(int arr[], int l, int r, int x) {while (l < r) // 当左边…

门户网站制作定制住房和城乡建设部官网查证

软件开发中出现bug的原因是多方面的&#xff0c;这些原因可能涉及到开发流程、人为因素、设计问题以及其他一系列因素。以下是一些常见的导致bug的原因&#xff1a; 1. 错误的需求分析&#xff1a; 不正确、不完整或者模糊的需求分析可能导致开发人员误解客户的需求&#xff0…

贵阳网络网站建设东营网手机版

因为我们要根据路由配置对应的图标&#xff0c;也要为了后续方便更改。因此我们将所有的图标注册为全局组件。&#xff08;使用之前将分页器以及矢量图注册全局组件的自定义插件&#xff09;&#xff08;所有图标全局注册的方法element-plus文档中已给出&#xff09; 全局注册…

建站点的步骤wordpress全能播放器代码

01—概述在对汽车结构进行动力学有限元分析时&#xff0c;无论是瞬态问题还是频响问题&#xff0c;都经常使用模态叠加法。模态叠加法动力学分析是常规模态分析的自然扩展&#xff0c;它利用结构振型来缩减问题求解规模&#xff0c;从而使数值求解更为高效。模态叠加法首先计算…

珠海网站建设网络公司网站开发典型

文章目录 什么是 maven为什么要选择mavenmaven 仓库什么是maven中央仓库什么是maven本地仓库 idea如何创建出maven项目如何引入第三方库依赖配置国内源 下载 Maven Helper 插件查看各个项目之间的依赖关系 什么是 maven Maven是 Apache 下的一个纯 Java 开发的开源项目&#x…

网站开发的问题猪八戒里面做网站骗子很多

最近工作中&#xff0c;需要在linux上开发C程序。有了下面的问题。 1&#xff0c;linux平台C开发和win32 C开发有什么区别呢&#xff1f; 2&#xff0c;除了C语言&#xff0c;数据结构等必须的知识外&#xff0c;还需要些了解什么呢&#xff1f; 3&#xff0c;如何在linux平台开…

湘潭学校网站建设 磐石网络第一校园app开发

文章目录 1.介绍2.使用示例3.执行过程描述4.整体的关系5.涉及到的核心源码&#xff08;只提取了关键代码&#xff09;5.1 Callable5.2 RunnableFuture5.3 FutureTask5.4 Thread 1.介绍 FutureTask 能够接收 Callable 类型的参数&#xff0c;用来处理有返回结果的情况。 2.使用…

ps如何做psd模板下载网站小县城做网站

大话西游6664版。根据你的系统平台下载相应的版本后&#xff0c;如果是压缩文件&#xff0c;先解压后双击运行&#xff0c;不是压缩文件&#xff0c;直接双击运行就可以了&#xff0c;运行后出现下面的界面&#xff0c;在下面界面上单击“Next”。跟所有的软件安装包一样&#…