头像-273390

Spirit

个人成就

获得 420 次赞

帮助过262人

如何用网页方式访问控制单片机

这个题目有点大,请指点下学习路线和学习资料。另外,STM32F103接以太网芯片,它的性能能实现这个功能吗?谢谢!

如何用网页方式访问、控制单片机?

如何用网页方式访问、控制单片机?我知道这个问题比较复杂,请提示下学习步骤和参考资料即可。另,我手上有正点原子的开发板,STM32F103接以太网芯片DM900可以联网。请问,F103的性能能够实现上述功能吗?

有关读RTC计数器的HAL库与LL库函数的比较

最近阅读HAL库代码,发现一个有趣的事:先看看LL库怎么写__STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx) { register uint16_t high = 0 low = 0; high = READ_REG(RTCx->CNTH & RTC_CNTH_RTC_CNT); low = READ_REG(RTCx->CNTL & RTC_CNTL_RTC_CNT); return ((uint32_t)(((uint32_t) high << 16U) | low)); } 再看下HAL库static uint32_t RTC_ReadTimeCounter(RTC_HandleTypeDef* hrtc) { uint16_t high1 = 0U high2 = 0U low = 0U; uint32_t timecounter = 0U; high1 = READ_REG(hrtc->Instance->CNTH & RTC_CNTH_RTC_CNT); //第一次读 low = READ_REG(hrtc->Instance->CNTL & RTC_CNTL_RTC_CNT); high2 = READ_REG(hrtc->Instance->CNTH & RTC_CNTH_RTC_CNT); //第二次读 if (high1 != high2) { /* In this case the counter roll over during reading of CNTL and CNTH registers read again CNTL register then return the counter value */ timecounter = (((uint32_t) high2 << 16U) | READ_REG(hrtc->Instance->CNTL & RTC_CNTL_RTC_CNT)); } else { /* No counter roll over during reading of CNTL and CNTH registers counter value is equal to first value of CNTL and CNTH */ timecounter = (((uint32_t) high1 << 16U) | low); } return timecounter; }对比之下,感觉HAL写得有意思,它对CNTH寄存器先后读了两次,应该是担心:读CNTH与CNTL之间,恰好出现计数器累加并出现进位,导致读出结果不正确。不知大伙怎么看?您又是如何读TC计数器的呢?

请客观地评价arduino的优劣

认识的很多电子工程师——不管是从业多年的,还是刚毕业电子专业出身的新人,都对Arduino持有不屑地态度。本人对Arduino仅仅是浅尝,只是本能地感觉:任何事物都有其存在的价值。所以请各位客观地评价一下Arduino的优劣。

如何让整个工程在level3优化级别下,指定部分函数优化级别

如何让整个工程在level3优化级别下,指定部分函数优化级别为level2?---------------------------------------------------------------------------------------谢谢各位的回答已经确定没有办法指定部分函数的优化级别。个别企业版的编译软件可以做到。目前只能指定不同的c文件使用不同的优化级别。

编译成汇编问题

因为不明原因,编译的程序运行出错,需要阅读汇编代码排查。目前只知道Keil在调试状态下能看到运行中的汇编代码。阅读起来非常不便。请问,有什么办法或者工具,把阅读甚至打印出完整的汇编代码?----------------------------------------------------------------------------------------------补充:可能有朋友劝我没有必要去看汇编代码。但,有些莫名其妙的故障,通过看汇编才能发现问题。已经有过两次经验:一次是我定义了两个指定地址的变量u32 test1[100] __attribute__((at(0X68000000)));u8   test2[400] __attribute__((at(0X68000000)));结果发现两个数组空间并不重叠,这是通过看编译后的汇编才发现的。然后认识到是自己对编译原理的认识不足另一次是帮助网友排错,他的程序总是跑飞也是通过看汇编发现某个函数的入口地址错误,改变优化等级为level0才正常。

MDK5,C语言代码编译成汇编

使用MDK5开发,一般都用C语言写代码。如果查看编译后生成的汇编代码呢?

求秒抢F103小系统板的原理图

如题在秒抢页面没找到原理图,求问。唱词小系统板不复杂,用有测一下就能搞清楚,但还是想看看原理图。谢谢!