- 博客(33)
- 资源 (4)
- 收藏
- 关注
原创 讲通一个小知识点---C语言三目运算符
前言本文的小知识点事C语言的三目运算符,这是一个很好用的运算符,你可以看到在kinetis的库函数里有大量的应用,本篇我会用一个我们熟悉的例子进行讲解 知识点? : 也称为条件运算符号,是C语言中唯一的一个三目运算符,结合顺序是从右往左。实例分析这是qn908的时钟分配图: 从上图可以看出sysclk的来源有三个,这在CLK_CTRL寄存器中可以清楚的看到,如下图: 那kinetis的时钟
2016-11-23 12:23:15 4594
原创 菜单程序(二级指针学习)
Menu_Index中通过判断按键值调整菜单指向,并将菜单指向MenuIndex返回 其中主要是按键KEY_ENTER切换菜单比较关键 这里用 MenuIndex_LastLvl这个数组来在切向下一菜单是记录上一菜单的指向,如果定义成如下的结构体中的当前选择项就更方便清晰了。 2. 返回主页 清除全屏后,改变两个标志位 注:把正常情况的处理放在if后面。因为if语句总是需要先做判
2016-11-20 22:03:35 2541
原创 16位有符号
1. 16位有符号 补码最大的数为0111 1111 1111 1111,其原码跟他一样(正数原码补码相同),最小的数为1000 0000 0000 0000; 其范围是-(2^15)~(2^15-1),即-32768~32767 补码1 0x0001 0b00000000000000
2016-11-20 19:31:45 11830
原创 Kinetis-MCG
第一个字母分别FLL还是PLL 第二个字母分别是旁路还是非旁路 第三个字母分别内部时钟源还是外部时钟源 FEI 内部时钟经过FLL,输出MCGOUTCLK FEI —> FEE mux1选择FRDIV过来的外部时钟OSCCLK, FEE —>FBE mux2选择OSCCLK,FLL继续工作但不输出 FBE —>PBE mux3选择PLL的输出 PBE
2016-11-19 19:38:59 331
原创 Effects of Using Too Much Mobile Phone
In our daily life, we can always observe that there are many people walk on the road, staring at their cell phones instead of looking at the way. Our world is becoming like Zombie word. It is obvious t
2016-11-19 19:17:30 732 1
原创 flashloader
你有想过我们编译好的二进制文件是如何下载到目标芯片的flash中的吗?上图的flashloader是个啥子玩意?表面是我们点了编译器的一个下载按钮,二进制文件是直接下载到flash中去了,其实不然。Flashloader是IAR为C-SPY调试器开发的一个可执行小程序(有点类似Bootloader),IAR在调用调试器的时候需要先将Flashloader可执行文件下载到目标芯片的RAM中。 然后再
2016-11-19 18:53:13 4606
原创 IAR的ILINK链接器icf配置文件(分析MKE18F512xxx16_flash.icf)
本篇介绍介绍IAR的icf配置文件,以MKE18F512xxx16_flash.icf为例子。
2016-11-19 18:37:55 2416 1
原创 IAR封库步骤
IAR封库需求1. 保密。工程中的重要关键代码不想给别人看到,但是工程代码又需要给到客户。 2. 在使用STM32的固件库的时候,需要往工程中添加使用到的功能的对应源文件,比如:stm32f10x_gpio.c等等,一个个添加很麻烦不说,每次在rebuild的时候都要编译这些基本不变的文件。 而通过使用库则可以解决这些问题,首先只需添加一次库文件,第二Rebuild的时候只编译我们自己写的源
2016-11-19 18:01:53 4961
原创 TS_Self_Cap---Key_Event_State
需求情景如上图,单电容触摸按键,返回的是按键电容对应的一个数值。当人不触碰按键是,,计数值TSICNT大。 当人触摸按键后,TSICNT变小。 如何把具体数值的变化,变成人理解的按下 释放呢?设计思路状态定义:空闲状态 IDLE(检测是否进入TOUCH状态;更新BASELINE值;) 人手按下状态 TOUCH(检测是否保持TOUCH状态,还是切到RELEASE状态) 人手释放状态 RELEASE
2016-11-17 17:00:43 565
原创 CortexM3,CortexM4存储器映像
Cortex-M3存储器映射CM3 只有一个单一固定的存储器映射。这一点极大地方便了软件在各种CM3 单片机间的移植。举个简单的例子,各款CM3 单片机的NVIC 和MPU 都在相同的位置布设寄存器,使得它们变得通用。尽管如此,CM3 定出的条条框框是粗线条的,它依然允许芯片制造商 灵活地分配存储器空间,以制造出各具特色的单片机产品CM3 的地址空间是4GB, 程序可以在代码区,内部SRAM 区以
2016-11-16 10:46:10 3719
原创 STM32---ADC
1. 这就是为什么我用规则三重ADC模式,ADC3接到PA4上为什么就得不到数据,这种问题只能定心慢慢找。 2. 交替模式,三重ADC模式,DMA传输模式2在此模式下,每当出现 2 个可用数据项时,就会生成一个 DMA 传输请求(如果 ADC_CCR 寄存器中的 DMA[1:0] 位等于 0b10)。此请求首先会将存储在 ADC_CDR 32 位寄存器低位 半字中的第一批转换数据传输到
2016-11-15 14:47:53 1172
原创 STM32固件库
ST中文件的包含关系:a.main.c 中包含#include “stm32f0xx.h” //stm32f10x.h 包含stm32中的寄存器地址和结构体类型定义b.stm32f0xx.h中包含#include “core_cm0.h” // #include “system_stm32f0xx.h” //ST公司提供,设置系统时钟和总线时钟 #include <\stdint.
2016-11-15 13:37:31 780
原创 STM32的优先级NVIC_PriorityGroupConfig的理解及其使用
1. 抢占式优先级>响应优先级>中断表中的排位顺序正是因为每个中断源都需要被指定这两种优先级,就需要有相应的寄存器位记录每个中断的优先级;在Cortex-M3中定义了8个比特位用于设置中断源的优先级,这8个比特位可以有8种分配方式,如下:所有8位用于指定响应优先级 最高1位用于指定抢占式优先级,最低7位用于指定响应优先级 最高2位用于指定抢占式优先级,最低6位用于指定响应优先级 最高3位用于
2016-11-15 13:32:45 3084
原创 oled+w25x16+vs1003编程经验
#1. 请注意区分 全局变量以及局部变量的区别,局部变量才会在堆栈中,全局变量是在静态存储区,不会出现在堆栈内,全局变量的大小受到SRAM大小的影响,局部变量的大小受到STACK大小的影响2. /—-The Length of This Array is 76711 Byte.—-/ const unsigned char music[]= { } 嵌入式系统高级C语言编程P31:很多嵌
2016-11-15 11:47:08 609
原创 FOC_ESC_V3晶振问题
首先感谢广辉!!! 1.没有晶振可以用另一个板子引入8M晶振 ,即用外部时钟源(HSE旁路)在这个模式里,必须提供外部时钟。它的频率最高可达25MHz。(和广辉试了28M,也能用)用户可通过设置在时钟控制寄 存器中的HSEBYP和HSEON位来选择这一模式。外部时钟信号(50%占空比的方波、正弦波或 三角波)必须连到SOC_IN引脚,同时保证OSC_OUT引脚悬空。2. 由于103的8M
2016-11-15 11:45:05 836
原创 ARM启动过程(Cortex-M4 NXP QN9080为例)
CMSIS 到底是什么CMSIS的意思是Cortex Micro-controller Software Interface Standard,微控制器软件接口标准, 是 Cortex-M 处理器系列的与供应商无关的硬件抽象层。CMSIS 可实现与处理器和外设之间的一致且简单的软件接口,从而简化软件的重用,缩短微控制器开发人员新手的学习过程,并缩短新设备的上市时间。如何使用CMSIS,需要哪些文件?
2016-11-13 21:28:01 7955
原创 向量表偏移量寄存器(VTOR)在MultiTimer.c上的使用
向量表当发生了异常并且要响应它时,CM3 需要定位其处理例程的入口地址。这些入口地址存储在所谓的“(异常)向量表”中。缺省情况下,CM3 认为该表位于零地址处,且各向量占用4 字节,因此每个表项占用4 字节。
2016-11-13 16:39:09 8301
原创 HEXIWEAR--Host_MCU_Interface
The serial interface between host processor MK64 and bluetooth processor KW40 supports UART communication using no parity, 8 data bits, and 2 stop bits. Baud rate is 230400 BPS.这时MCU之间通信规定的简单包结构
2016-11-11 11:17:06 627
原创 嵌入式硬件寄存器操作层次
嵌入式硬件寄存器操作层次 寄存器操作—>基于CMSIS-CORE操作—>基于硬件抽象层hal操作—>基于API操作(针对hal api再次作了面向对象的封装)
2016-11-08 16:14:39 1798 1
原创 HEXIWEAR---SDK架构
首先SDK由platform平台代码和FreeRTOS操作系统代码组成1.platform平台代码下,我们先分析CMSIS和devices,对应下图中倒数第二层:CMSIS-CORE and CMSIS-DSP CMSIS: ● Cortex-M3内核及其设备文件(core_cm0.h + core_cm0.c) ─ 访问Cortex-M0内核及其设备:NVIC等 ─ 访问Cortex-M0
2016-11-08 15:02:23 1200
原创 Semiconductor Company
InvenSense(应美盛) 主要生产的产品为运动感测追踪组件,为智能型运动处理方案的先驱、全球业界的领导厂商,驱动了运动感测人机接口在消费性电子产品上的应用。公司提供的集成电路(IC)整合了运动传感器-陀螺仪以及相对应的软件美信半导体 是MaximIntegrated的中文名,是全球领先的半导体制造供应商,成立于1983年。公司总部在美国加州。2001年,Maxim并购了Dallas Sem
2016-11-01 20:10:19 497
原创 PCB Layout Experience
1.shift + S 单层显示2.改过孔 。。。什么的默认值 3.选中一个区域后,一个接一个摆放! 4. shift + 空格切换线(圆弧 ,直角,45度角)5. 拼版 Place->Embedded Board Array/Planelize 6. 一条net,从一个孔走出一条线,到一个位置停下来点一下,然后PT,从net另一端画过来。7. * 用来打过孔换层。 + - Page
2016-11-01 20:04:32 513
原创 线程学习
线程的创建:include include include include include define uint unsigned inttypedef struct { uint a; uint b; } hello;void print_ids( const char *s) { pid_t pid; pthread_t tid; pid = g
2016-11-01 18:15:07 210
原创 linux 命令
网络命令:重启网卡:/etc/init.d/network restart关闭NetworkManager: service NetworkManager stop(-eth0 , -lo虚拟回环网卡 , -virbr0 虚拟网桥)配置tftp服务器: vim /etc/xinetd.d/tftp 重启tftp服务: /etc/init.d/xinetd restart配置nfs服务器: v
2016-11-01 18:13:30 208
原创 SDK2.0之I2S的中断callback函数
Introduce在LPC5411x上有多个Flexcomm接口可供选择使用。每一个Flexcomm接口都可以提供一种外设功能,包括USART、SPI、I2C、I2S(不是所有flexcomm都支持I2S)。对于USART、SPI和I2S的数据传输可以使用FIFO,但I2C并不能使用Flexcomm的FIFO;本博客主要分析当Flexcomm Interface6和Interface7选作I2S外设
2016-11-01 17:02:15 1847
基于adc0809的两路报警及LCD显示的数字电压表proteus仿真程序及C语程序开发包
2013-06-11
nrf24l01无线接收verilog HDL代码
2013-06-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人