- 博客(16)
- 收藏
- 关注
原创 Simulink自动生成嵌入式代码体验
Matlab版本:MatlabR2016b开发板:AC7811QBFE开发板直接上模型(Motorola_Creat_Signal模块为自定义模块用于解析Motorola格式的CAN报文,模块内部根据StartBit进入不同的分支再结合Length、Factor进行移位等算术运算):模型的功能:从底层输入Test_Msg报文,解析后将结果输出给底层。CAN报文的DBC文件如下:首先配置Simulink的解算器Solver选择定步长(基础采样时间设置为0.1S)解算器算法选用离散算法。再配
2022-07-13 22:07:22
973
原创 CRC16_Modubus校验算法
最近工作学习到Modbus、Ymodem等协议,均涉及到CRC16校验算法,故而有必要深入了解CRC16校验算法的原理。以CRC16_Modbus为例:结果:51925 = 0xCAD5CRC16_Modbus传输时先传输CRC16的低字节再传输高字节。留下的疑问:采用注释区两个while循环嵌套的写法得到的结果与两个for循环嵌套的写法不同,还望高人指点。......
2022-06-20 14:37:47
1374
原创 树莓派Pico开发----流水灯
最近参加工作一直在和C、C#打交道,一年多前自学的Python似乎都无用武之地,偶然看到树莓派Pico(双核Cortex-M0+)支持MicroPython,而且价格也只有4$,树莓派基金会还提供了一个非常详细的Python SDK PDF文档(该文档详细介绍了各种内置的函数及对应函数的具体用法和提供的案例说明)。基于以上(真香)因素入手了一块Raspberry Pi Pico开发板。首先准备以下文件:将Pico通过USB连接到电脑后会出现一个名为RPI-RP2的U盘,将uf2文件拷贝进去即可完成烧入
2022-06-06 22:37:18
1462
原创 从MCU上电启动流程出发编写bootloader(中)
上文已经分析了MCU上电的启动流程。本文尝试编写一个简单的bootloader以及一个实现CAN通信的APP,为我们下一步尝试编写一个通过CAN通信实现刷写APP功能的bootloader作铺垫。下面直接上干货。看一下bootloader工程的结构,非常的简单,实现代码也非常简单。main.h#ifndef _MAIN_H#define _MAIN_H#define APPLICATION_ADDRESS (uint32_t)0x08004000//APP工程的起始地址typedef
2022-05-29 09:46:59
1235
1
原创 从MCU上电启动流程出发编写bootloader(上)
配置开发板的BOOT,从EFLASH(即片内Flash存储器)启动。在KEIL中也需要进行相应的设置,将接下来要编写的bootloader烧写至EFLASH(bootloader段需要设置从0x8000000开始,空间根据bootloader大小分配)。我们将bootloader程序反汇编可以查看EFLASH分配占用情况。结合startup_ac78xx.s启动文件来分析MCU上电的启动流程。__Vectors DCD __initial_sp .
2022-05-28 21:29:24
2390
原创 I.MX6ULL裸机开发----点亮LED
开发板:正点原子 i.mx6ull mini板I.MX6ULL是基于Cortex-A7内核的,支持运行Linux操作系统。参考资料:【正点原子】《I.MX6ULL嵌入式Linux驱动开发指南》开发用到的交叉编译工具与S3C2440一致,只不过程序是借助正点原子的imxdownload可执行程序烧录到TF卡上,不需要使用J-LINK进行NOR FLASH的烧写。开发板LED0的电路原理图如下:首先了解下I.MX6ULL的GPIO的相关寄存器。参考:《IMX6ULL参考手册》用于GPIO1_
2022-05-24 19:37:57
855
原创 S3C2440裸机开发----点亮LED
开发板:FriendlyARM Micro2440标准版S3C2440是基于ARM9内核的,包含MMU(内存管理单元),支持运行Linux操作系统。首先列出参考资料:韦东山老师的《嵌入式Linux应用开发完全手册》。本文对环境的搭建不多赘述(按照韦东山老师的书来),重点提出作者遇到的问题以及解决办法,希望可以帮助到遇到类似问题的朋友。遇到的问题:交叉编译工具arm-linux-gcc无法使用原因:随书附赠光盘中的arm-linux-gcc可执行程序是32位,而作者安装的Ubuntu19.04是64
2022-05-09 22:43:40
762
原创 STM32单片机开发----GPIO(General-purpose Input Output)通用IO口
一、GPIO的相关配置寄存器1.CRL端口配置低寄存器&CRH端口配置高寄存器(均为32位)一组GPIO有16个GPIO口(例如GPIOA简称PA,有PA0-PA15这16个GPIO口)一个GPIO口由4个bit位配置分别是MODE[1:0]和CNF[1:0],所以一组GPIO就需要4*16=64bit位去配置,这正好对应我们的CRL和CRH寄存器。PA0-PA7由CRL配置,PA8-PA15由CRH配置。以PA0为例对应MODE0[1:0] CNF0[1:0]MODE[1:0]用于设
2022-02-23 12:16:18
950
原创 51单片机开发----点亮8*8点阵的1行1列的LED
从开发板直观地看到这个模块用到的元器件:有8*8的点阵,一片74HC595芯片(对应图上U6)。查看开发原理图。光看到封装是不够的,进一步看内部电路设计是怎样的,当然还有74HC595的使用手册也是要看的。到此处我们知道行是由74HC595的输出控制且1(高电平)有效,此外列是由单片机的P0口控制的且0(低电平)有效。只有当第一行第一列同时有效时,第一个LED灯才会被点亮。接下来主要就是了解74HC595的使用了。74HC595中文手册功能(用处):8 位串行输入/输出或者并行输出移位寄存
2021-03-30 14:56:10
1892
1
原创 Spring简单开发
Java EE Spring 简单实例在src目录下创建applicationContext.xml文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http:/
2021-01-22 18:07:59
135
1
原创 Spring-MVC简单开发
Java EE Spring-MVC 简单实例1)在web.xml文件中部署DispatcherServlet<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://
2021-01-17 23:36:48
184
1
原创 MyBatis简单开发
JavaEE MyBatis简单实例需要导入的jar包(数据库驱动注意和自己的MySQL版本对应)新建数据库(注意将id设置为主键并设置为自增)CREATE TABLE `account`.`info` ( `username` VARCHAR(20) NOT NULL, `password` VARCHAR(45) NULL, `id` INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`));Account实体类package ent
2021-01-15 17:30:10
148
原创 Struts2简单开发
JavaEE Struts2简单应用struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
2021-01-15 16:06:34
114
原创 Python3列表常用操作
测试环境为:IOS系统下的Python AI# 建立一个空列表lists = [] lists.append('a')lists.append('b')lists.append('c')# 遍历列表for value in lists: print(value)# 访问倒数第一个元素 注意Python列表下标支持负数!print("倒数第一个元素为:"+lists[-1])# 拷贝列表的引用new_lists_0 = listsnew_lists_0[0] = '0'print
2020-09-28 22:41:59
166
原创 Python3构造方法多态性的实现
Python3中涉及类的继承时,利用可选实参实现__init__方法的多态性class TestDefault(): def __init__(self, username, password=''): self.username=username if password == '': self.password='********' else: self.password=password
2020-09-23 22:11:16
677
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人