摘要: GPIO内部具有钳位保护二极管,如图所示。其作用是防止从外部I/O管脚输入的电压过高或者过低造成内部电路损坏。如果从Pin输入的信号(假设任何输入信号都有一定的内阻)电压超过VDD加上上方二极管的导通压降(驾驶0.7V),则二极管导通,会把多于的电流引到VDD,而真正输入到内部的信号电压不会超过VD 阅读全文
posted @ 2020-02-02 19:44 cnwanglu 阅读(4860) 评论(1) 推荐(1) 编辑
摘要: 开发环境:Keil5 工程目录: 一、汇编调用C——多数相加 使用汇编调用C,需要注意的是参数的传递。不同于X86的传参规则,在ARM体系中,如果形参的个数不超过4个,使用特殊寄存去R0~R3传递;而如果参数大于4个,就要将多出来的那部分参数使用堆栈传递。 压栈的之后移动位置指针,压栈顺序别忘了是最 阅读全文
posted @ 2019-12-28 12:20 cnwanglu 阅读(2284) 评论(0) 推荐(0) 编辑
摘要: 今天在Windows下通过Pycharm安装Tensorflow时遇到两个问题: 使用pip安装其实原理都相同,只不过Pycharm是图形化的过程! 1、由于使用国外源总是导致Timeout 解决方法是在Pycharm中添加清华源 https://mirrors.aliyun.com/pypi/si 阅读全文
posted @ 2019-12-09 11:45 cnwanglu 阅读(7851) 评论(0) 推荐(0) 编辑
摘要: 扩频技术的发现 1944年,好莱坞26岁女影星HedyLamarr(号称世界上最美丽的女人)发明了扩频通信技术,这种跳频技术可以有效地抗击干扰和实现加密。 后来人们发现,扩频技术可以得到如下收益:从各种类型的噪声和多径失真中获得免疫性;得到信噪比的增益。换句话说,使用扩频通信抗干扰性更强,通信距离更 阅读全文
posted @ 2019-11-21 23:34 cnwanglu 阅读(1131) 评论(0) 推荐(0) 编辑
摘要: 此代码欲实现的功能是:使用中断或者DMA的方式采集滑动变阻器采集到的电压值,使用单ADC单通道采样! (由于不是直接需要电压,所以转换函数我就没列出来,可根据自身需要去网上查到转换的函数。) 代码结构树为: |————ADC_GPIO_Config(void) ADC_Config(void)|—— 阅读全文
posted @ 2019-11-17 19:58 cnwanglu 阅读(1742) 评论(0) 推荐(0) 编辑
摘要: 前提:我用的芯片是STM32L系列,可能对其它STM32系列不完全适用,仅供参考! 一、问题描述 我在使用DMA方式读取单ADC单通道采集的数据时,发现只能正确的采集一次数据,后来的就一直与第一次的相同。配置DMA时,用于保存转换数据的16位变量的地址和ADC_DR寄存器的地址都没问题,DMA模式是 阅读全文
posted @ 2019-11-16 21:06 cnwanglu 阅读(4718) 评论(1) 推荐(3) 编辑
摘要: 一、CAN数据帧的标准格式和扩展格式 我们知道CAN总线上的数据帧都可以配置一个ID号,其可以为11位(标准ID格式)或者29位(扩展ID格式),这也是数据帧的标准格式和扩展格式的区别所在。 这个ID在CAN优先级中起着重要的作用,它决定了数据帧发送的优先级。对于优先级高的信息,可以给他打包上一个高 阅读全文
posted @ 2019-11-08 14:40 cnwanglu 阅读(6904) 评论(0) 推荐(1) 编辑
摘要: STM32CAN控制器每个筛选器组由两个32位的寄存器组成。 根据所需位宽的不同,各个筛选器可配置成16位或32位模式(如下图,当FSCx=1为32位模式,FSCx=0时为16位模式)。同时,筛选器的模式可配置成掩码模式和列表模式(FBMx=0为掩码模式,FBMx=1为列表模式)。 掩码模式:对报文 阅读全文
posted @ 2019-11-07 22:01 cnwanglu 阅读(3896) 评论(0) 推荐(0) 编辑
摘要: 本人用的单片机是STM32F407,其它型号的单片机类似,可做参考! 一、标准CAN协议位时序概念 由于CAN属于异步通讯,没有时钟信号线,连接在同一个总线网络中的各个节点会像串口异步通讯那样,节点间使用约定好的波特率进行通讯。同时,CAN还使用“位同步”的方式来抗干扰、吸收误差,实现对总线电平信号 阅读全文
posted @ 2019-11-06 22:03 cnwanglu 阅读(4335) 评论(0) 推荐(0) 编辑
摘要: 1.简介 在STM32基本定时器的PSC预分频寄存器和ARR自动装载寄存器都有影子寄存器。 我们可以看到基本定时器功能框图上对应的寄存器有影子~ 2.功能 影子寄存器的存在起到一个缓冲的作用。 设置影子寄存器后,用户设定的值->寄存器->影子寄存器->work,未设置的情况下,用户的值->寄存器-> 阅读全文
posted @ 2019-10-30 21:53 cnwanglu 阅读(2292) 评论(0) 推荐(1) 编辑