STM32HAL库写CAN通信程序最近遇到了难题,有谁有具体例子不

STM32HAL库写CAN通信程序最近遇到了难题,有谁有具体例子不,第1张

别人写的你参考一下:半年前接触STM32,刚开始MCU用的32F1,库用的标准外设库3.5,写过一些简单的东西。再后来尘斗发现ST还有一个软件叫做STM32CUBEMX,可以自动的生成初始化程序,对于我这个32新手来说无疑是天降福音!终于不用为繁琐的配置而苦恼了(其实就是自己对各项配置不熟,而且没有自己积累的程序可以CtrlC+CtrlV)。虽然CUBE用的是ST新出的HAL库,与以前的标准外设库完全不兼容,甚至基本的I/O *** 作都变了,会让习惯了标准外设库的人很苦恼。但是我对标准派败磨外设库也不是很熟,而且CUBE的界面化设计真的让配置工程变得很方便,再加上它还有一个类似于FPGA的引脚分配界面,让资源分配,PCB布局布线也方便了不少,于是我选择了用CUBE,用HAL库。很早就开始的写32的朋友有不少,他们也试过HAL库,可最后无一例外都选择了继续使用标准外设库。他们表示完全不习惯HAL库,另外HAL库不太好,毕竟是自动生成的配置,没有自己手动配置的来得熟悉来得透彻,谁知道软件是怎么给你配置的工程。另外CUBE就是给那些不会写32的人用的(ST的官方的说法似乎也是HAL是为了方便做嵌入式相关且对底层不熟的人设计的,但想不通他为何要把两个库做得不兼容)。前面一直在画PCB,调PCB,做机械之类的,没有写程序。最近又开始写32,现在用的MCU是32F4,库是HAL/F4库1.6.0。可是我发现我连GPIO的上拉输出都实现不了,无论如何I/O始终默认输出低电平( *** 作I/O可以实现电平跳变),这个问题我昨天查了一天,从库到最底层的寄存器都看了,可没发现什么问题。周围用HAL库的就我一个。。。有些无奈了,难道HAL库真有什么问题吗?如果真有这么明显的问题,ST官方肯定早就发现了。已经下好了标准外设库,打算换标准外设库,工程从头到尾都自己配置,这样出了问题也更方便找。可是我始终有一点想不明白,枯戚既然ST官方在推HAL库,那肯定也有他的道理,我们也应该勇于接受新事物,为何身边的朋友却都不愿意接纳HAL库。

在windows下用C语言如何实现socket网络编程,需要用到以下头文件和库:

头文件winsock2.h,

静态库文件Ws2_32.lib

动态DLL文件Ws2_32.dll

写一个UDP发送程序的步骤如下:

1. 用WSAStartup函数初始模启埋化Socket环境;

2. 用socket函数创建一个套接字;

3. 用setsockopt函数设置套接字的属性,例如设置为广播类型;很多时候该步骤可以省略;

4. 创建一个sockaddr_in,并指定其IP地址和端口号;

5. 用sendto函数向指定地址发送数据,这里的目标地址就是旦蚂广播地址;注意这里不需要绑定,即使绑定了,其地址也会被sendto中的参数覆盖;若使用send函数则会出错,因为send是面向连接的,而UDP是非连接的,只能使用sendto发送数据;

6. 用closesocket函数关闭套接字;

7. 用WSACleanup函数关闭Socket环境。

与之类似,一个UDP接收程序的步骤如下,注意接收方一定要bind套接字:

1. 用WSAStartup函数初始化Socket环境;

2. 用socket函数创建一个套接字;

3. 用setsockopt函数设置套接字的属性,例如设置为广播类型;

4. 创建一个sockaddr_in,并指定其IP地址和端口号;

5. 用bind函数将套接字与接收的旁枣地址绑定起来,然后调用recvfrom函数或者recv接收数据; 注意这里一定要绑定,因为接收报文的套接字必须在网络上有一个绑定的名称才能保证正确接收数据;

6. 用closesocket函数关闭套接字;

7. 用WSACleanup函数关闭Socket环境。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12397950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存