软件类
克罗帝曼
这个作者很懒,什么都没留下…
展开
-
STM32F407系统升级IAP实战
MCU启动后,进入bootloader,识别是否有新固件userdata区域的数据是否有新固件标识(userbakapp区域是否有新数据),如果有,将userbakapp区内的数据复制到userapp区域,将userdata的新固件标识清除,重新启动进入userapp。userapp 程序:0x8020000 长度0x20000。bootloader 程序:0x8000000 长度0x8000。userbakapp程序:0x8040000 长度0x20000。...原创 2022-08-17 09:55:33 · 1628 阅读 · 0 评论 -
HAL 空闲中断接收后数据长度计算
HAL库对空闲中断的应用不是很友好,自己编写了空闲中断处理函数原创 2022-06-18 20:04:31 · 525 阅读 · 0 评论 -
IAR7版本兼容旧版本问题
当IAR7一下的版本用IAR7打开是会报错。打开一个以前编译正常的项目(用IAR5.5建立的),编译时提示如下错误(现在用的IAR6.3):Error[Pe147]: declaration is incompatible with “__interwork__softfp unsigned long __get_PSP(void)” (declared at line 52 of "C:\Program Files\IARC:\Libraries\CMSIS\CM3\CoreSupport\c.原创 2021-08-25 08:54:59 · 469 阅读 · 0 评论 -
呼吸灯正弦函数
包含#include “math.h”__weak void StartLED_Task(void const * argument){/* USER CODE BEGIN 5 // Infinite loop */for(;????{for(uint8_t i=0;i<120;i++){ if(i<100) { osDelay(20); brightNess=sin((3.1415926/100)*i); } else { osDelay(原创 2021-08-12 14:39:06 · 794 阅读 · 0 评论 -
ES7P003实战填坑
开发环境有两种iDesigner4.1和VSCode For ESSEMI,在http://www.essemi.com/article/c80/p2.html?searchWord=32%E4%BD%8D里可以下载。需要先“预安装环境”“C 编译器工具链 HRCC (8位)”再安装iDesigner和vscode。ESBurner用来配置芯片的配置字,包含时钟,仿真,复位,IO等选择。仿真器:es-link II,可以仿真和下载8位,32位芯片。有几个特别需要注意的地方:仿真时需要打开ESBu.原创 2021-06-21 16:20:39 · 3404 阅读 · 2 评论 -
IAR 新旧版本兼容问题
报错内容:extern uint32_t __get_PSP(void); 已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义extern uint32_t __get_MSP(void);已经在C:\Program Files\IAR Systems\Embedded Workbench 6.0\arm\inc\c\intrinsics.h文件中定义2 修改方式把core_cm3..原创 2021-05-19 13:53:28 · 943 阅读 · 0 评论 -
EMW3080固件烧录方法
EMW3080B 模块 all.bin 烧录方法3080B 的 all.bin 是通过串口,进入 Bootloader 模式,使用命令 4 进行烧录。烧录方法EMW3080B 模块 用户串口通过 “TTL 转 USB 模块” 接到 PC 端 USB 接口,并在设备管理器中找到对应的 COM 端口号,如 COM1;2.打开串口调试软件工具 - SecureCRT,连接用户串口 COM1,波特率:921600bps;3.EMW3080B 模块的 BOOT 引脚拉低,然后 Reset 拉低,重启后,原创 2021-05-12 14:56:01 · 1836 阅读 · 0 评论 -
WIFI模块UDP广播建立通讯
UDP广播广播UDP与单播UDP的区别就是IP地址不同,广播使用广播地址255.255.255.255,将消息发送到在同一广播网络上的每个主机。值得强调的是:本地广播信息是不会被路由器转发。当然这是十分容易理解的,因为如果路由器转发了广播信息,那么势必会引起网络瘫痪。这也是为什么IP协议的设计者故意没有定义互联网范围的广播机制。广播地址通常用于在网络游戏中处于同一本地网络的玩家之间交流状态信息等。 其实广播顾名思义,就是想局域网内所有的人说话,但是广播还是要指明接收者的端口号的,因为不可能接受者.原创 2021-05-10 15:02:34 · 1651 阅读 · 0 评论 -
Freertos 邮箱收发结构体数据
freertos.c源码如下:/* USER CODE BEGIN Header *//** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ********************************原创 2021-04-11 16:17:50 · 480 阅读 · 0 评论 -
Free-rtos 队列发送接收结构体
freertos.c源码如下:/* USER CODE BEGIN Header *//** ****************************************************************************** * File Name : freertos.c * Description : Code for freertos applications ********************************原创 2021-04-11 13:40:34 · 721 阅读 · 0 评论 -
FreeRTOS 中断,临界,任务概述
FreeRTOS中断和临界段配置Cortex-M3的NVIC最多支持240个IRQ中断,1个不可屏蔽中断(NMI),1个systick(滴答定时器)和多个系统异常中断。临界段:必须不打断完整运行。优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。中断级临界段:用在中断服务程序中,优先级低于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断不响应。先读出BASEPRI的值保存,将configMAX_SYSCALL_INTERRU.原创 2021-03-10 21:21:06 · 256 阅读 · 0 评论 -
Freertos 的任务状态和运行时间串口打印
参考正点原子例程实现。先配置FreeRTOSConfig.h/***************************************************************************************************************//* FreeRTOS与运行时间和任务状态收集有关的配置选项 *//**********原创 2021-03-10 11:37:19 · 1334 阅读 · 0 评论 -
VSCode 环境配置支持STM32的仿真
首先下载文件:gcc-arm-none-eabi-9-2019-q4-major-win32-sha2mingw64openocd-0.10.0VSCodeSetup-x64-1.42.1安装VSCode和openocd-0.10.0。将gcc-arm-none-eabi-9-2019-q4-major-win32-sha2和mingw64解压到C盘。环境变量包含路径打开vscode安装插件如下主要安装:c/c++,通过STM32CubeMX生成make。通过..原创 2021-03-08 21:16:55 · 1137 阅读 · 0 评论 -
C语言编程进阶应用
@[TOC]结构体拷贝#include <stdio.h>struct People{ int age; char* name;};int main(){ struct People p; p.age = 20; p.name = "zhangshan"; printf("age:%d\n",p.age); struct People p1 = p; //内存的拷贝 p.age = 100; p.n.原创 2021-02-20 17:18:53 · 121 阅读 · 0 评论 -
IAR优化详解
-引用 https://v.youku.com/v_show/id_XNzE2MDY5NDI0.htmlList item不优化:所有的变量都可以被观测到。低优化:变量不再使用时,不被观测。中等优化1、common subexpression elimination去除 通用子表达式2、loop unrolling循环展开3、Function Inlining函数内联4、code motion程式码调整5、type-based alias analysi原创 2021-02-19 10:06:30 · 4623 阅读 · 2 评论 -
printf在Terminal I/O或Uart输出信息
在仿真时便于调试的方法使用printf可以在Terminal I/O输出信息,烧录时需要屏蔽DBUG_PRNTF即可。代码如下#include <stdio.h>#define DBUG_PRNTF 1 #ifdef DBUG_PRNTF printf("\n%s\n","M5311rst");//测试功能 #endif...原创 2021-02-19 08:30:47 · 308 阅读 · 0 评论 -
STM32 DCMI OV9655 直接在LCD显示
CUBEMX配置DCMI如下:生成代码。DCMI初始化代码如下:void HAL_DCMI_MspInit(DCMI_HandleTypeDef* hdcmi){ GPIO_InitTypeDef GPIO_InitStruct = {0}; if(hdcmi->Instance==DCMI) { /* USER CODE BEGIN DCMI_MspInit 0 */ /* USER CODE END DCMI_MspInit 0 */ /* Perip.原创 2021-02-16 12:18:09 · 1312 阅读 · 0 评论