㈠ 请问如何写单片机的库函数
你说的是3.0以上的固件库吗?
systeminit()函数在主程序中被rcc_configuration()函数调用,完成系统时钟的配置功能。我看过这个函数的具体内容,是直接操作寄存器来完成配置。如果使用stm32f10x_rcc.c文件中的函数来完成时钟配置,和systeminit()的顺序和效果一样。
当然,为了保证兼容性,使低版本固件库写的程序运行,就还有stm32f10x_rcc.c存在,像早期版本的rcc_configuration()函数就是使用这个文件中提供的函数来完成时钟配置的。
补充:是的,systeminit()函数完成了时钟初始化的功能。另外systick的使用也变简单了,以前要几个函数完成初始化,现在只要一个就行。
你看看3.0版本固件system_stm32f10x.c中的代码是怎样的吧。其中是对rcc寄存器直接赋值操作,和stm32f10x_rcc.c中相关的函数作用一样。
如果在程序中要使用端口、外设等,由于这些东西需要时钟才能工作,所以还是需要stm32f10x_rcc.c中的函数来完成时钟的控制。
㈡ 单片机的函数有哪些比如中断函数…求所有函数代码
_crol_ 字符循环左移
_cror_ 字符循环右移
_irol_ 整数循环左移
_iror_ 整数循环右移
_lrol_ 长整数循环左移
_lror_ 长整数循环右移
_nop_ 空操作8051 NOP 指令
_testbit_ 测试并清零位8051 JBC 指令函数名: _crol_,_irol_,_lrol_
原 型: unsigned char _crol_(unsigned char val,unsigned char n);
unsigned int _irol_(unsigned int val,unsigned char n);
unsigned int _lrol_(unsigned int val,unsigned char n);
举例:
_crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回
_testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除。
_chkfloat_: 测试并返回源点数状态。
就是汇编中的子函数。
_crol_,_cror_:如果二进制数为01010101 那么_crol_(1) 左移1位后将高位补低位。
结果10101010。
功 能:_crol_,_irol_,_lrol_以位形式将val 左移n 位,该函数与8051“RLA”指令相关,上面几个函数不同于参数类型。
例:
#include <intrins.h>
main()
{
unsigned int y;
C-5 1 程序设计 37
y=0x00ff;
y=_irol_(y,4);
}
㈢ 如何让用函数库的函数单片机P1口的8个LED灯每次向右移动3位的流水灯效果
假如LED是共阴极接法,当P1=0b0000 0000;时全不亮,当P1=0b1111 1111;时全亮.
第一次全不亮,P1=0b0000 0000;
第二次亮1-2-3,P1=0b1110 0000;
第三次亮4-5-6,P1=0b0001 1100;
第四次亮7-8-1,P1=0b1000 0011;
第五次亮2-3-4,P1=0b0111 0000;
找到规律了吗?
即每次给P1口的值和0b111做或运算,而且每次将0b111移位3位。
知道这个规律就可以在库函数上增加运算,实现功能。
㈣ 能简单说一下单片机库函数与和寄存器吗
简单说就是库函数就是通过函数的方式进行对寄存器的操作来实现原本应该直接操作寄存器实现的功能。。。。运营库函数。有几个好处。在库函数里对你要负值给寄存器的值进行简单验证是否超越了取值范围等。还有当你要操作的寄存器很多时一般比较难记住寄存器的地址,名称等。用库函数的时候就不用记住寄存器的地址了。。通过库函数去操作就好了。。简单点说就这些。。当然还有很多。。。。。
㈤ 请问一下单片机的 库函数 怎么做啊
去买一本Windows编程宝典,那上面介绍了一些库函数,一般都是由专业的公司做的,你只能写一些你自己的函数,放在一个文件中,再调用.
㈥ 求指导怎样去看去熟悉STM32等单片机的库函数和库函数的操作
库函数只是在初始化的时候方便了。重点还是要了解外设的工作流程,可以先找一个外设,像串口uart这种,知道要做什么,在看例程函数怎样实现的。其他外设的库函数都是一个风格,从名字就能看出功能~~good luck,共勉~~
㈦ 51单片机库函数哪来的
函数库。
_诘テ_语言中直接调用库函数即可,具体如下: #include。
㈧ 51单片机使用数学函数库中的正弦函数 需要怎样改
不建议直接用正弦函数,因为执行时间会很久,51单片机运算能力比较弱,一般都是用算法计算高级函数的,为了执行时间以及效率高,通常都是把高级函数用另外的方法去做,例如你这里要计算y=sinx这个函数,显然直接用库函数是容易写程序是容易,但是单片机执行就很慢(可能要算一秒才能出结果),如果你的精度不需要很高(例如精确到1度),你做表,把1度到90度的正弦值全部自己算出来,然后做成表,通过查表方法就可以得到结果,这样虽然写程序是麻烦,但是执行速度和效率都高。你应该是刚刚学习单片机的,不理解CPU底层,C语言虽然是很灵活,但是也要看是什么CPU,是根据CPU选择高效率的数据类型以及算法。
㈨ AVR单片机函数库avr/pgmspace.h 是啥意思啊,在程序中有啥作用
pgmspace.h是将数据保存在程序存储器中的相关函数,有了这个头文件,你可以定义一个数组,把这个数组保存在ROM中,而不是RAM中,调用时需要特殊的命令,具体可以参考GCC自带的文档。
现在版本的AVR Studio只要添加avr/io.h就可以了,但是需要在设置中选择你所使用的单片机型号,编译器自动选择相应的头文件。
㈩ STM32单片机库函数问题
一般不行
必须要调用stm32f10x_rcc.c,SystemInit()只是将系统的时钟帮你配置好,其实你也可以不调用它,你可以自己调用stm32f10x_rcc.c中的函数自己来配置,不过这样的话就要记得配置好flash的等待周期,两种方式之间没什么太大区别。另外一般你会需要开启外设的时钟或者其他一些功能就需要调用stm32f10x_rcc.c中的函数。
还有如果你使用的是3.2.0以上的库的话,SystemInit()其实不需要你自己调用,startup_stm32f10x_XX.s中有这样的代码
Reset_Handler
LDR R0, =SystemInit
意思就是上电(Reset)后执行的第一段代码就是SystemInit(),这是在main函数之前调用的,所以不需你自己再去调用了
SystemInit()在调用的时候要注意你自己板子上的外部晶振是多少,默认是25MHZ,如果你板子上的晶振的不是这么大的话,你需要修改stm32f10x.h里面的HSE_Value
补充:system_stm32f10x.c里的函数的功能仅仅是完成系统时钟的配置,如果你不使用任何外设或者用系统时钟做其他用的话是可以不用stm32f10x_rcc.c
stm32f10x_rcc.c中的函数不仅仅是完成分频倍频的功能,还有开启外设时钟,检测RCC中断,配置RTC时钟等功能,不是单单配置一个系统时钟那么简单