摘要:
做到了让stm32触发svc中断并传递进去参数然后切换到handler模式并修改特殊寄存器的值,从而达到关中断,但是其实这个程序直接就是特权级,故不进入handler模式也可以修改特殊寄存器。。。。。。如下为调用写的开关中断函数: 新建了一个文件asm.c,所有我写的汇编函数都在里面: 前两个是关中断和开中断函数,主要做的事将参数传入R8并触发svc中断。Svc中断中则调用第三个set_i()函... 阅读全文
摘要:
首先,先看一下mdk下的混合编程的基本方法: 使用如上方法就可以进行混合编程了。 但是要特殊注意一点,个人感觉这个是直接调用一个代码段,并非一个函数,因为他不会保护调用这个代码段之前的现场。比如: 在调用上面这个代码段之前,先定义一个num变量,供下面使用,如下: 而根据mdk的c语言转化成的汇编,将这个num变量存在R10中 那么进入这个代码段之后,R10的值被修改为4,返回到主函数,num的... 阅读全文
摘要:
SPI是器件的比较常用的通信协议。 SPI总共有四根线: SS:片选线,每个设备都和主机MCU有一条单独片选线相连,片选线拉低意味主机输出,也就是说一个主机可以和多个从机相连,只需要有足够多的片选线。 SCK:时钟线,SPI捕获数据是在时钟的跳变沿(可以设置是在奇数沿还是在偶数沿)。 MOSI::输出线 MISO:输入线 SPI有四种模式:这四种模式靠时钟极性(CPOL)和相位... 阅读全文
摘要:
SD卡从容量上讲分两种:标准容量和大容量,最小的是标准容量,小于等于2G 其中的访问关系如下: SD卡分为两种模式:认证模式和传输模式,每一个模式包含着不同的状态,如下 以下主要讲其初始化过程: SD卡初始化主要包含5条命令:CMD0,CMD8,ACMD41,CMD2,CMD3,初始化在认证模式下进行,此模式只用到CMDLine。 上电之后,所... 阅读全文
摘要:
Stm32内部有多个BKP寄存器,在主电源被切断或者系统产生复位的时候,BKP寄存器仍然可以利用备用电源的支持保持其重要内容。BKP在实际应用中可以存入重要数据,防止被恶意查看。BKP有入侵检测,需要占用1个io口,毕竟有时候销毁重要数据比被别人发现更好。RTC框图如下:灰颜色的地方是待机仍然可以供电。 Stm32中RTC可以设置三种中断:1.闹钟中断:数据达到闹钟寄存器中的值的时候发生中断。... 阅读全文
摘要:
Lwip有三套api,分别是: raw api:使用方法为使用回调函数,即先注册一个函数,当接受到数据之后调用这个函数。缺点是对于数据连续处理不好。 Lwip api:把接收与处理放在一个线程里面。因为需要线程的概念,故需要操作系统,当然,ucos虽然只有进程的概念,但是也可以用。 BSD api:与unix兼容,移植容易,效率低。 附完整叙述大图 ... 阅读全文
摘要:
Ad-hoc是wifi的一个模式,依托普通无线局域网802.11家族。网络中所有结点的地位平等,无需设置任何的中心控制结点,省去了无线中介设备AP。比如一台电脑建立了一个网络,这个时候加入了两台电脑。第一个电脑这个时候关闭,那么后来的两台电脑仍可以继续通信,不会受到影响。 Ad hoc网络是一个动态的网络。网络结点可以随处移动,也可以随时开机和关机,这些都会使网络的拓扑结构随时发生变化。Ad-h... 阅读全文
摘要:
老是弄不明白ADC的输入到底在哪,看了stm32F103Ve的datasheet,将引脚和通道的映射关系贴在下面: 好了,写到这,我已经看了中文手册一上午了,可是啥都没看懂,下午接着看,写代码不重要,理论高于实际。 ADC的四种模式:单次转换模式,连续转换模式,扫描模式,间断模式(间断模式分为规则组和注入组)单次转换模式:ADC只执行一次转换,CONT=0。连续转换模式:ADC转换一结束就启... 阅读全文
摘要:
http://witmax.cn/gdb-usage.html 首先GDB可以自动化调试,但是我不会 首先编译的时候要加上 -g选项 分屏使用GDB: gdb -tui 在GDB中加载程序 : file 文件名 设置参数: set args 参数 设置观察点(当有... 阅读全文
摘要:
管道 管道应该是等左边的程序执行完,才使用左边的程序的输出执行右边的程序。 但是在测试的时候,如果左边的程序无限循环且不等待的输出,那么左边的程序执行时右边的程序也会执行,个人感觉这是linux的机制,因为缓冲区溢出了所以不得不启动右边的程序来使缓冲区空出来。 管道和重定向的区别1.左边的命令应该有标准输出|右边的命令应该有标准输入左边的命令应该有标准输出>右边只能是文... 阅读全文