1、函数指针
typedef void (*TIM_VOID_FUNCTION_POINTER)(void);
把TIM_VOID_FUNCTION_POINTER定义为指向一个没有返回类型的无参函数的指针类型。说简单些,TIM_VOID_FUNCTION_POINTER被定义为一种函数指针类型,而这种指针专门指向那种返回类型为void的无参函数。
2、(*(void(*)())(0))(); 解析
`(*(void(*)())0) ()` 等同 `((void(*)())0) ()`
*硬件地址跳到0处:`(*(void(*)())0) ();`*
预习:
`float (*h)();` 表示h是一个指向返回值float类型的函数的指针
`(float(*)());` 表示一个"指向返回值float类型的函数的指针"的类型转换符
此处2解析转自:[参考1](https://blog.csdn.net/zyboy2000/article/details/4202349)[参考2](https://blog.csdn.net/adotcpp/article/details/8774905?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242)
3、code关键字
一般来说,C语言中定义每个变量初始化后都会占用一定内存(RAM)空间。在keil中提供了code关键字,这个关键字在C语言中没有。用法如下:
unsigned char code word[] = {
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
};
int code vel = 1201;
code作用就是将其修饰过的变量存储在ROM而非RAM中。RAM小,所以常量不变化的值一般可以使用code放入ROM中
4、ADC学习
Stm32f103有3个ADC精度为12位,每个ADC最多16个通道但是ADC12一般有16个;3只有8个。 送到可以单次连续扫描或间断进行。结果也可以选择对齐方式因为,16位数据寄存器。 转换顺序根据下图设置。
触发方式可以直接配置寄存器也可内部软件或者外部I/O触发。(通过CR寄存器进行设置) 转换时间(输入时钟、采样周期、转换时间) 输入时钟:因为挂在APB2所以PCLK2时钟72MHz,可以设置分频2/4/6/8一般为8即时钟频率为9MHz。 采样周期:配置采样周期可以确定使用多少个ADC时钟周期来对电压进行采样。采样周期数可以通过SMPR12中的SMP[2:0]设置。2控制通道09,1控制通道1017每个通道采样周期可以不同但是最少1.5个时间周期。 转换时间:采样时间+12.5个周期。12.5个周期是固定的,一般设置为PCLK2=72M,经过ADC预分频最大是12M这样算出采样周期1.5周期最短转换时间为1.17us。 中断:规则通道转换完成、注入通道转换完成、模拟看门狗事件。这些在SR寄存器中设置 Eg:转换后的数据为12位二进制数,测量电压范围是0~3.3 转换后的二进制数x,因为12位adc在转换时将电压的范围大小(3.3)转化为4096(2^12)份,所以转换后的二级制数x代表的真实典雅的计算方法就是y=3.3*x/4096
5、滴答定时器Systick
Systick(定时器系统嘀答定时器)24位的硬件定时器
Systick又叫系统嘀答定时器,是一个24位的硬件定时器。嵌入式操作系统常有一个类似“心跳”的定时器,来分配时间片,实现宏观上的多任务。其实,操作系统的多任务,在微观上,CPU对多任务的管理是分时的。每个任务都给一定的时间片,就是把时间分成N个等份,优先级高或是重要的任务多占几个时间片,优先级低的或是不重要的任务就少占几个时间片。大部分嵌入式操作系统基于时间片的。 根据学过的物理中的时间与频率的公式:fosc=1/T T=1/fosc ,fosc为系统的频率。 如果STM32时钟频率为:72MHz,每次的时间为:T=1/72MHz。1秒钟为:1/(每次的时间)=1/(1/72MHz)=72 000 000次。1MHz是:1000 000。 反过来讲。SysTick_Config(72000)代表:72000*(1/72MHz)=1/1000=1(ms)。即定时为1ms 转自:https://blog.csdn.net/qq_36373500/article/details/78703904
|