首页 > 其他分享 >嵌入式学习踩坑报告及难点说明

嵌入式学习踩坑报告及难点说明

时间:2023-04-11 22:55:41浏览次数:38  
标签:难点 异步 代码 通信 嵌入式 学习 时钟

嵌入式学习踩坑报告及难点说明

本集合用来收集嵌入式32的学习中由于个人蠢笨且不修基础而多次犯下的错误,以供后来者言笑,或意外碰到,便于查询  

表达式必须是指向完整对象类型的指针

此错误是在学习按键时候犯的,我定义了一个结构体数组在另一个文件

interrupt.h中,并在main.c中引用

extern struct keys key[];

然后所有引用了结构体成员变量的敌方都报了标题这个错,苦思冥想之后

加上了

#include "interrupt.h"

 

时钟配置

晶振频率经过两次相除得到目标频率

比如晶振频率是80,000,000

那么配置psc为8000-1(0~65535) Counter Period 设置为100 - 1

那么时钟频率为100hz,即10ms中断一次。

同样的配置PWM也是如此。

其中pulse为占空比。

 

STM32CUBEMX生成文件总是会把自己的写的代码清除

我写代码没有备份的习惯,每次写着写着,要添加配置了,就打开stm32cubemx添加,然后重新生成代码。然后发现,我自己写的代码没有了 ! 气的我把桌子都敲裂开了,更气的是我不长记性。

幸好由论坛老哥帮大忙:参考

重新生成时一定不能把keil关了,然后cubemx干完活后,c和h文件给他改,工程文件千万不能给他动!

还有最最重要的,代码只能写在usercode begin —— end之间,其他的地方都时cubemx的地盘!

给char赋值

给char赋值1、2、3等后,就是类似int的1,2,3;而与字符串比较时就是ascii码123等的东西,必须加上

‘0’后才能真正比较

串口

UART和USART是两种常见的串口硬件电路,它们的区别是USART既可以使用异步通信,也可以使用同步通信,而UART只能使用异步通信。

异步通信和同步通信的区别是是否有时钟线。异步通信没有时钟线,需要在数据的头和尾加入起始位和停止位来区分不同的数据帧,接收方也需要预先知道发送方的波特率。同步通信有时钟线,收发双方通过统一的时钟来确定何时进行数据的传输,不需要起始位和停止位,传输效率比异步通信要高。

DMA

用比较形象的话来说,如果oop编程中析构程序是一个清洁工,那么DMA就是一个32中无需占用芯片运算的搬运工

时钟开启函数

所有要用到定时器功能的外设(PWM,IC(输入捕获),还有其他的一些)要在main函数里添加时钟开启函数

否则的话就不会工作。笔者考试时就因为时间紧迫,忘记了这一茬,估计要痛失一大半的分数(和输入捕获的功能都没法被检测到了),希望后来者引以为鉴

标签:难点,异步,代码,通信,嵌入式,学习,时钟
From: https://www.cnblogs.com/7869-cistarr-5783/p/17308191.html

相关文章

  • NGINX进一步学习
    神器Nginx的学习手册(建议收藏)运维网工 2023-04-0709:00 发表于重庆收录于合集#Nginx学习手册1个#安全运维5个#运维工程师109个来源:DevOps技术栈大家好,我是中文妹。Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上Nginx......
  • Git的快速学习与掌握:在Git命令面板的使用、在IDEA中配置并使用Git的教程
    原文章链接http://t.csdn.cn/hL3b9Git分布式版本控制系统,适用于团队开发合作,本文讲述的是Git的快速学习与掌握:在Git命令面板的使用、在IDEA中配置并使用Git的教程目录原文章链接http://t.csdn.cn/hL3b9学会使用基本命令第一步:跟随图片动手练习安装和配置提交操作版本操作、切......
  • java学习日记20230410-List
    List接口基本介绍List集合类中元素有序,即添加顺序和取出顺序一致,且可重复;List集合中的每隔元素都有其对应的顺序索引,即支持索引List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素JDKAPI中List接口的实现类有:ArrayListLinkedListVe......
  • C++/ 4/11 学习内容
    空指针调用结构体中的成员函数const修饰成员函数,不能更改函数成员的值友元,让朋友可以访问本类的私有变量, *全局函数做友元*类做友元*成员函数做友元运算符重载:注意格式就ok还有<<这个输出时候的重载, 各种个样的函数重载,主要是为了方便,在主函数里面的实现......
  • 机器学习-梯度消失爆炸
    梯度消失本层的神经元的激活等于上一层神经元对应的权值进行加权和运算,最后通过一个非线性函数(激活函数)如ReLu,sigmoid等函数,最后得到的结果就是本层神经元的输出,逐层逐神经元通过该操作向前传播,最终得到输出层的结果。梯度消失的影响:浅层基本不学习,后面几层一直在学习,失去深度的......
  • 机器学习-线性回归
    每个特征变量可以首先映射到⼀一个函数,然后再参与线性计算,模型如下:其中表示自变量(特征分量),表示因变量,是权重,是偏移项(截距);越大,说明对结果的影响越⼤输入空间映射到特征空间(映射函数),建模.为特征映射相关技术,包括特征哈希、特征学习、Kernel等目标函数预测值$h_\theta(x)y$之......
  • ros-python学习样例笔记
    1.通信基本原理介绍待写2.三种通信方式的程序样例(python版)2.1topic通信方式(非自定义和自定义)2.1.1创建工作空间和topic功能包在ubuntu中打开命令行,输入下面的命令创建并初始化工作空间,一定要回到XXX_ws的目录下初始化工作空间#创建工作空间文件夹my_ros(一般命名......
  • java arrays类方法parallelSort,学习总结
    Arrays.sort与Arrays.parallelSort区别Arrays.sort()Arrays.sort()方法对对象或原始数据类型的数组进行排序。此方法中使用的排序算法是Dual-Pivot Quicksort。 换句话说,它是快速排序算法的自定义实现,以实现更好的性能。此方法是单线程的 ,有两种变体:sort(array)–将整......
  • 学习笔记396—自定义Docker镜像推送到Docker Hub实战
    自定义Docker镜像推送到DockerHub实战云原生探索的必经之路—容器化,而容器化目前最主流的技术莫过于Docker了,因为之前也大量的输出过Docker相关的技术博客,如果感兴趣的话可以直接访问专栏:​​《探索云原生》​​,按需学习哦。这篇文章还是从Docker入手,从0开始讲述下如何将自己的D......
  • Salesforce Admin管理员中文学习教程_如何高效筛选出具有Admin权限的用户!
    组织中最常见的错误之一就是拥有太多具有系统管理员简档的用户。不幸的是,这在某些行业中非常普遍。实际上这存在着很大的潜在风险。拥有这些权限的用户可能会暴露、窃取或删除组织中的数据,甚至影响到其他用户。防止过多的管理员访问权限是保护Salesforce组织的第一步。但是,仅将......