完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
上学期的嵌入式系统课程实验报告,参考老师给的实验指导书自己写的实验报告,比较详细,分享一下~
软件:实验通过软件STM32CubeMX进行引脚配置,并生成代码,代码使用的是HAL库,可在集成编译环境Keil中进行代码修改与添加。 文档:开发板的原理图、STM32F4xx参考手册和 HAL 驱动说明书
其中VSENSE 为传感器输出电压值,V25为25℃时的VSENSE 的值,Avg_Slope为温度与VSENSE曲线的平均斜率。根据数据手册的电气特性(如下图所示)可得V25=0.76V=760mV, Avg_Slope = 2.5Mv/℃。
查看Nucleo Board 电路图,如下图红框所示,找到对应虚拟串口所对应的 UART引脚为PA2,PA3,并进行配置(RX 接收、 TX 发送)。 串口模式选择 Asynchronous 异步通信方式。ADC1外设选择温度传感器通道。 2) 配置引脚参数 ADC1选择默认配置,USART设置波特率为 115200 Bits/s。传输数据长度为 8 Bit。奇偶检验无,停止位1.其他参数默认。并在NVIC设置中选择中断使能。 3)生成项目代码
uint16_t AD_Value = 0;float Temp = 0; 2) 在主函数的while循环中打开串口接收,判断接收到的数据为11时,进行温度测量并发送测得的温度。 3 ) 其中printf函数为重新定义标准库函数实现串口输出的。方法是将fputc 里面的输出指向串口(重定向),即需要自己添加一个 int fputc(int ch, FILE *f)函数。具体做法为:在 main()函数前面添加如下代码, #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int __io_putchar(int ch) #else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f) #endif /* __GNUC__ */ 代码中添加了#ifdef 宏定义进行条件编译,如果使用 GUN C 编译,则 PUTCHAR_PROTOTYPE 定义为:int __io_putchar(int ch)函数,否则定义为 int fputc(int ch, FILE *f)函数。再定义 printf()函数 PUTCHAR_PROTOTYPE { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF); return ch; }
使用STM32CubeMX软件开发为实验提供了很多便利,即配置引脚、参数等都可以在这个软件完成而不需自己用代码写,提高了开发效率,不过对其生成的代码也要看懂,一方面可以学习代码编写,一方面如果对其中的某一配置有需要修改的可以直接在编译器中对代码进行修改,节省时间。 当使用到某一个功能的时候,需要对该功能对应的HAL库函数进行阅读和学习,因为库函数提供了大量的封装好的功能函数,可以很方便地实现实验所需功能,而不需要自己去对寄存器进行读写操作。但是有时候对一些没有封装的底层宏定义函数也可多了解,这样可以更灵活地使用。 |
|
|
|
只有小组成员才能发言,加入小组>>
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
3493 浏览 0 评论
3431 浏览 9 评论
3116 浏览 16 评论
3602 浏览 1 评论
9308 浏览 16 评论
1457浏览 3评论
716浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
734浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2521浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
2038浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-4-12 21:10 , Processed in 1.287973 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191