|
楼主 |
发表于 2014-4-2 19:48:34
|
显示全部楼层
- /*
- *********************************************************************************************************
- *
- * 模块名称 : 主程序模块。
- * 文件名称 : main.c
- * 版 本 : V1.0
- * 说 明 : 按键检测和LED控制例程。
- * 修改记录 :
- * 版本号 日期 作者 说明
- * v1.0 2013-07-24 Eric2013 首发
- *
- *********************************************************************************************************
- */
- #include "bsp.h" /* 底层硬件驱动 */
- #include "arm_math.h"
- /* 定义例程名和例程发布日期 */
- #define EXAMPLE_NAME "F4-001_FPU实验"
- #define EXAMPLE_DATE "2013-07-24"
- #define DEMO_VER "1.1"
- /* 仅允许本文件内调用的函数声明 */
- static void PrintfLogo(void);
- #define pi 3.14159265358979
- /*
- *********************************************************************************************************
- * 函 数 名: main
- * 功能说明: c程序入口
- * 形 参:无
- * 返 回 值: 错误代码(无需处理)
- *********************************************************************************************************
- */
- int main(void)
- {
- uint8_t ucKeyCode; /* 按键代码 */
- float32_t pSrc;
- float32_t pDst;
- q15_t pOut;
- q15_t in;
- /*
- ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在 system_stm32f4xx.c 文件,主要功能是
- 配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM
- */
- bsp_Init(); /* 硬件初始化 */
- PrintfLogo(); /* 打印例程信息到串口1 */
- pSrc = -1.1f;
- bsp_StartAutoTimer(0, 1000); /* 启动1个500ms的自动重装的定时器 */
- /* 进入主程序循环体 */
- while (1)
- {
- CPU_IDLE();
- if (bsp_CheckTimer(0)) /* 判断定时器超时时间 */
- {
- /* 每隔500ms 进来一次 */
- bsp_LedToggle(4); /* 翻转LED4的状态 */
- /*****************
- COS函数的计算 */
- /* 这个里面的输入范围是[0 2*pi) */
- printf("Value = %f\\r\\n", arm_cos_f32(PI / 4));
- /* 这里是0 - 32767 对于[0 2*pi)*/
- printf("Value = %f\\r\\n", arm_cos_q15(32768/8) / pow(2, 15));
- /* 这里是0 - (pow(2, 31) - 1)对应于[0 2*pi)*/
- printf("Value = %f\\r\\n", arm_cos_q31(pow(2, 31)/8) / pow(2, 31));
- /* SIN函数的计算 */
- /* 这个里面的输入范围是[0 2*pi) */
- printf("Value = %f\\r\\n", arm_sin_f32(PI / 4));
- /* 这里是0 - 32767 对于[0 2*pi)*/
- printf("Value = %f\\r\\n", arm_sin_q15(32768/8) / pow(2, 15));
- /* 这里是0 - (pow(2, 31) - 1)对应于[0 2*pi)*/
- printf("Value = %f\\r\\n", arm_sin_q31(pow(2, 31)/8) / pow(2, 31));
- /* 求平方根 */
- // in = 100;
- // arm_sqrt_q15(in, &pOut);
- // printf("Value = %d\\r\\n", pOut);
- }
- }
- }
- /*
- *********************************************************************************************************
- * 函 数 名: PrintfLogo
- * 功能说明: 打印例程名称和例程发布日期, 接上串口线后,打开PC机的超级终端软件可以观察结果
- * 形 参:无
- * 返 回 值: 无
- *********************************************************************************************************
- */
- static void PrintfLogo(void)
- {
- printf("\\n\\r");
- printf("*************************************************************\\n\\r");
- printf("* 例程名称 : %s\\r\\n", EXAMPLE_NAME); /* 打印例程名称 */
- printf("* 例程版本 : %s\\r\\n", DEMO_VER); /* 打印例程版本 */
- printf("* 发布日期 : %s\\r\\n", EXAMPLE_DATE); /* 打印例程日期 */
- /* 打印ST固件库版本,这3个定义宏在stm32f10x.h文件中 */
- printf("* 固件库版本 : V%d.%d.%d (STM32F4xx_StdPeriph_Driver)\\r\\n", __STM32F4XX_STDPERIPH_VERSION_MAIN,
- __STM32F4XX_STDPERIPH_VERSION_SUB1,__STM32F4XX_STDPERIPH_VERSION_SUB2);
- printf("* \\r\\n"); /* 打印一行空格 */
- printf("*************************************************************\\n\\r");
- }
- /***************************** 安富莱电子 www.armfly.com (END OF FILE) *********************************/
复制代码 |
|