- 博客(18)
- 收藏
- 关注
原创 STM32F4 CANopen firmware download -- Application
本篇是STM32F4 CANopen firmware download 系列的第三篇, 主要解释如何给application插入image header文件。处理hex文件的方式和bootloader里相同,也是在python脚本里使用 srec_cat工具。
2024-08-21 11:30:51
359
原创 STM32F4 CANopen firmware download -- Bootloader
CANOPEN 升级固件, hex文件加入image信息。
2024-08-21 09:07:44
707
原创 STM32F4 CANopen firmware download
STM32F4通过 CANOPEN 下载固件,CANOPEN 节点由bootloader 和 application组成。
2024-08-19 14:02:48
269
原创 STM32F429IG SPI FLASH download algorithm
STM32F429IG SPI FLASH download algorithm。
2024-01-15 14:06:27
104
原创 STM32 FLASH error: FLASH_FLAG_PGPERR & FLASH_FLAG_PGSERR
在STM32F429 上用FLASH 模拟 EEPROM,工程是STM32CubeIDE里面创建和生成的。调试时发现第一次写FLASH时总是出错,第二次及之后再写FLASH则没问题。
2023-04-14 13:11:00
3153
4
原创 把驱动编译进内核
驱动路径通常,linux kernel的驱动文件都放在 drivers/ 里面,根据不同驱动类型放置在不同文件里, 如字符设备驱动 放置在 drivers/char/ 文件夹下。这里,自己创建一个文件夹 para_drv,用来放自己的驱动文件, 具体文件构成如: drivers/para_drv/Makefile drivers/para_drv/Kconfig drivers/para_drv/dtsled/para_dtsled.c drivers/para_drv/dtsl.
2021-12-10 15:33:30
636
原创 ssh 登陆时,报Permission denied (publickey)
网上关于ssh登陆时报Permission denied (publickey)的解决方式有很多,有文件权限问题等,但亲测都无效。以下是我遇到这个问题的解决过程:公私钥是否匹配:通过私钥打印出公钥,并于本地公钥对比#通过私钥打印出公钥ssh-keygen -y -e -f <your-private-key>2. 查看ssh server user(即需要ssh 登陆的 remote host)里的 authorized_keys是否包含上面的pub keycat /home
2021-10-12 14:06:25
4753
原创 systemd 的定时任务
@[TOC](测试脚本设置自己的service设置自己的timer验证timer)前提:想要使用 systemd 的timer 功能,你必须要有几个要件:系统的timer.target 一定要启动要有个sname.service 的服务存在(sname 是你自己指定的名称)要有个sname.timer 的时间启动服务存在测试脚本remove-log.sh#!/bin/bashdate >> /home/xx/remove-logecho "run remo
2021-07-06 12:20:15
571
原创 树莓派中安装docker,并构建自己的镜像
1. 前言最近需要在I.MX6+ubuntu18上运行.net程序,但一直不成功,所以打算在ubuntu中安装docker,在docker中运行。先拿树莓派练手。2. docker的安装这个网上比较多,主要参考菜鸟(https://www.runoob.com/docker/ubuntu-docker-install.html)和docker的官方文档(https://docs.docker.com/engine/install/ubuntu/),有一点需要注意的是,在手动安装时,执行到“***通过
2021-03-05 14:13:44
947
1
原创 C#RS485通信
C#实现485通信1. 功能心跳检测:心跳1s发一次,上电后一段时间内不检测心跳,此后,每3s检测一次是否收到心跳,若3s内一次都没有收到心跳,认为网络故障。500ms内没收到ack,或者ack包的数据域里有错误代码,重发,重发超过3次,仍没有收到ack, 认为网络故障。两帧间隔10ms:每次发送报文前,延时10ms再发送。若网络故障,则关闭串口通信。2. 设计到的C#知识点串口通信:引用类RJCP.IO.Ports定时器: 引用类System.Timers进程间通信:event
2021-02-19 14:28:12
11534
6
原创 适配器模式(C语言) -- already done
一、介绍适配器模式(Adapter Pattern)是作为多个不兼容的模块之间的桥梁。它结合了多个模块的功能。因C语言没有类和继承等特性,所以本文只讨论接口适配器,至于类适配器和对象适配器不在本文讨论范围。例如,在需要解码的程序中,一个上位机(用户)需要跟解码器通信,但是解码器需要能解码不同通信协议的数据包。二、工作原理将一个模块的接口转换成另一种接口,转换后的接口可以兼容。调用者(用户)不需要知道各模块内部的实现,方便增减模块,可以解耦,方便移植三、适配器图解四、代码示例common.
2020-11-10 09:58:02
520
原创 STM32笔记:TIM
stm32 定时器常用寄存器:1.1 自动重装载寄存器(TIMX_ARR):自动装载寄存器是预先装载的,写或读自动重装载寄存器将访问预装载寄存器。根据在TIMx_CR1寄存器中的自动装载预装载使能位(ARPE)的设置,预装载寄存器的内容被立即或在每次的更新事件UEV时传送到影子寄存器。当计数器达到溢出条件(向下计数时的下溢条件)并当TIMx_CR1寄存器中的UDIS位等于’0’时,产生更新事件。更新事件也可以由软件产生。1.2 预分频器( TIMX_PSC):这个控制寄存器带有缓冲器,它能够在工作时..
2020-10-12 15:33:58
1400
原创 C语言之面向对象
C语言之面向对象_网关概述嵌入式设备与外界通信大多是串口,若想通过以太网、WIFI、BLE等通信,则需要外接对应的模块来实现,但每种通信方式对应的网络协议却不相同,为了实现代码复用及减少模块间的耦合,借用面向对象的方式: 只关注通信的属性:接收,处理,发送; 至于具体的通信行为,则由每个通信协议内部实现。将上述分为两个模块:通信的属性–> 协议解析器; 具体通信行为–> 命令解析器模块解析2.1 协议解析器2.1.1 数据结构 struct ProtocolInte
2020-09-01 12:18:11
619
原创 STM32F429的bootloader跳转到APP时跳转失败,无法进入APP
遇到的问题:1.原有的工程,可以正常从bootloader 跳转到APP,但是在修改了APP里一个结构体后,bootloader无法正常跳转到APP。结构体修改前:typedef struct{uint32_t drugItems[1000];} TS_DRUG_ITEMS_COLLECTION;struct TS_DRUG_CATEGORY{uint32_t category_index;TE_STR_ID default_name_id;uint32_t drug_item_cou
2020-05-28 13:06:59
5251
原创 用stmCubeMx创建的stm32f429工程,重写printf
利用stm32CubeMx创建stm32f429的工程,开发环境为IAR。1.初始化串口void MX_USART6_UART_Init(void){/* USER CODE BEGIN USART6_Init 0 *//* USER CODE END USART6_Init 0 *//* USER CODE BEGIN USART6_Init 1 *//* USER CODE...
2020-04-20 09:28:52
495
原创 Windows下使用pip 安装库时报 [WinError 5]
在windows 的terminal 使用 pip install xlrd 报错:(ERROR: Could not install packages due to an EnvironmentError: [WinError 5] Access is denied: ‘c:\program files\python38\Lib\site-packages\xlrd’Consider usin...
2020-01-14 10:30:51
188
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人