IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> C语言生疏知识汇总 -> 正文阅读

[嵌入式]C语言生疏知识汇总

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

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:47:09  更:2021-11-19 17:48:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 8:22:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码