江协STM32:对射式红外传感器计次和旋转编码器计次

本文详细介绍了如何配置对射式红外传感器的外部中断,包括RCC时钟开启、GPIO模式设置、AFIO配置、EXTI边缘触发选择和NVIC中断优先级分配等步骤,以确保中断信号能正确处理和响应。
摘要由CSDN通过智能技术生成

对射式红外传感器计次

171e3b064460490daf977aef93a8981e.png

还是复制粘贴之前的文件

8608522e40754e388d1f241bddd3f1c3.png

创建外部中断文件

e650f189d96749aa903cc679b87b7346.png然后写初始化函数

df786b17a9b24a89bb386bdad8abf9cc.png

外部中断函数创建

这里写外部中断函数

b294a591f8c5478892305df7064426cf.png

看着这个图来配置

eeb0b8baaaa04ba4b2f96725428d8c99.png

e850ffd476aa4b1a9236c0db39b43efa.png22ed9d48a1e140e793712c5fa4591012.png具体步骤就是:

第一步,配置RCC,把我们这里涉及的外设的时钟都打开,不打开时钟,外设是没法工作的

第二步,配置GPIO,选择我们的端口位输入模式

第三步,配置AFIO,选择我们用的这一路GPIO,连接到后面的EXTI

第四步,配置EXTI,选择边缘触发方式,比如上升沿,下降沿或者双边沿,还有选择触发响应方式,可以选择中断响应和事件响应,一般都是中断响应

第五步,配置NVIC,给我们这个中断一个合适的优先级

最后,通过,NVIC,外部中断信号就能进入CPU了,这CPU才能收到中断信号,才能跳转到中断函数里执行中断程序

这几步就是外部中断的配置流程

开始编写程序

第一步开启时钟

开启GPIO时钟

这里解释一下为什么开GPIOB的时钟,时钟相当于人的大脑,寄存器是基于触发器,而触发器的赋值是一定需要时钟的,也就是说有时钟cup才能向寄存器写入值。一般用什么外设就要开该外设的时钟。我们这里用的是GPIOB这个外设,所以要开启GPIOB的时钟

7a2e044e77c14a5886d8c202ef6090f1.png

开启GPIOB的时钟,这里注意一下,GPIOB是APB2的外设,这里参数是APB2_GPIOB的这个,函数也要用APB2的这个开启时钟函数,注意函数和参数的这个APB2,APB1和AHB要对应起来

第二步开启AFIO的时钟

7a1b35a366e84dbeae6063683f2c866a.png

AFIO也是APB2的外设

b1f9e5e128eb4d5fa1db41d59eb97b33.png

48c00132a6184d8d9a2b1fb21982b2b8.png

 

如果不确定哪个外设接在哪个总线上,可以转到这个函数的定义,看一看参数表

第三步EXTI,这个外设的时钟是一直打开的,不需要我们再开启时钟了

第四步NVIC,这个外设的时钟是一直打开的,不需要我们再开启时钟了,这个是因为,NVIC是内核的外设,内核的外设都是不需要开启时钟的

第二步配置GPIO

a5cb7f457cd04cd0b09c0876d2ec00e0.png第一个GPIO_Mode,对应外部中断来说,要选择浮空输入,上拉输入,或者下拉输入,这其中的一个模式

1d051a2acb8148fb934a550f32484e0f.png

905c3c18dab64517b841da9f96199085.png

像这种其他外设使用GPIO的情况,如果你不清楚该配置为什么模式,可以看手册,GPIO这一章,有一个外设的GPIO配置表,里面优先每个外设的各个引脚都需要配置为什么模式

所以这里就给上拉输入,默认高电平的输入方式

第二个GPIO_Pin,我们用的PB14号口,所以就写GPIO_Pin_14

第三个GPIO_Speed还是GPIO_Speed_50MHz

最后调用GPIO_Init函数,初始化一下GPIO的外设

2cca179876ac4beb8f37e7e9462d899f.png

这样GPIO部分我们就配置好了

第三步,配置AFIO

这个AFIO外设,ST公司并没有给它分配专门的库函数文件,它的库函数是和GPIO再一个文件里的

611c74b44b2a4fd88fa77814344f5127.pngGPIO_AFIODenlnit这个函数是用来复位AFIO外设的,调用这个函数AFIO外设的配置就会全部清除

f7c64ab6f1a842e7bc9a6ecab2e5c394.pngGPIO_PinLocConfig这个函数是用来锁定GPIO配置的,调用这个函数,参数你指定某个引脚,那这个引脚的配置就会被锁定,防止意外更改,这个函数用到不多,了解即可

ecca50b7bea44ca49e2411866bc8fb4b.png

这两个函数是用来配置AFIO的时间输出功能的,用的也不多

808fbb4f25ce44d6b2c238c648c36742.png这两个函数比较重要了

GPIO_PinRemapConfig可以用来进行引脚重映射

第一个参数可以选择你要重映射的方式,第二个参数是新的状态,目前用不上

GPIO_EXTILineConfig,就是我们这次外部中断所需要用的函数

调用这个函数,就可以配置AFIO的数据选择器,来选择我们想要的中断引脚

2317ba9cced0430ea5302a508ad41d82.png

GPIO_ETH_MedialnterfaceConfig这个函数跟以太网有关,这个芯片没有以太网外设,所以也用不到

 

现在继续

cd6b8091d2ef4381b96e75bc4fd9618d.png

现在要配置AFIO外部中断引脚选择,直接复制GPIO_EXTILineConfig这个函数,然后跳转到定义看一下

291a4fa0b4674cc6a36d62475f75b827.png所以这个函数实际上是AFIO的函数

63327114ffa24f1382f771c6c94338ca.pngd25902b95fd14aa78d2ba3850b4210ca.png1205db61657d441bbbeecdb1b511497c.pngfc3496cca2754bec84320f2a8e4a837c.png8d04c35e04f14b0b94e864ed188e42f0.png

然后看第二个参数,第二个参数是GPIO_PinSource,指定要配置的外部中断线,这个参数可以是GPIO_PinSourcex,其中x可以是0到15

f85feeb15b454d00b1690ae6cf11ff91.png

0c185d37e2fb4a6eb772227040b4c0dc.png

x改成14,代表连接PB14号口的第14个中断线路

到这里AFIO外部中断已经选择配置就完成了,就这一个函数就行了

ea13a1e7edfe4037ad3838949b99ad70.png

当执行完这个函数后,AFIO的第14个数据选择器就拨好了,其中输入端被拨到了GPIOB的外设上,对应的就是PB14号引脚,输出端固定连接的是EXTI的第14个中断线路,这样,PB14号引脚的电平信号就可以顺利通过AFIO,进入到后级EXTI电路了

第四步配置EXTI

先看看EXTI的库函数

c62bfc63956149baaf987789dbb4cea8.png

这些就是EXTI的所有库函数了

第一个EXTI_Delnit,调用它,就可以把EXTI的配置都清除,恢复成上电默认的状态

第二个EXTI_Init调用这个函数,就可以根据这个结构体里的参数配置EXTI外设,我们初始化EXTI主要用的就是这个函数,使用方法和GPIO_Init也是一样的

第三个EXTI_StructInit调用这个函数,可以把参数传递的结构体变量赋一个默认值

像前面这三个函数,基本的所有外设都有,就像是库哈斯你的模板函数一样,基本每个外设都需要这些类型的函数,这些模板函数使用方法和意思也是一样的

第四个EXTI_GenerateSWInterrupt这个函数是用来软件触发外部中断的,调用这个函数,参数给一个指定的中断线,就能软件触发一次这个外部中断,如果你只需要外部已经触发中断,那就不需要这个函数了

c97c52651d674dcca3cca55ff8ed8410.png

200cb04a7443441795a22cfae14457fe.png

剩下的这个四个函数,也是库函数的模板函数,很多模块都有这个函数 ,因为再外设运行的过程中,会产生一些状态标志位,比如外部中断来了,是不是会有一个挂起寄存器置了一个标志位,对于其他外设,比如串口收到数据,会置标志位,定时器实际到,也会置标志位这些标志位都是放状态寄存器的,当程序想要看这些标志位时,就可以用到这四个函数

162行函数,可以获取指定的标志位是否被置1了

163行函数,可以对置1的标志位进行清除

 

那对于这些标志位,有的比较紧急,在置标志位后会触发中断,在中断函数里,如果你想查看标志位和清除标志位,那就要164行和165行这两个函数

164行获取中断标志位是否被置1了,

165行,清除中断挂起标志位

总结一下:

如果你想在主程序查看和清除标志位,就用162和163,如果你想在中断函数里查看清除标志位,就用164和165,其实本质上,这四个函数都是对状态寄存器的读写,162,163,和164,165两个类似的功能,都是读写状态寄存器,只不过164和165只能读写与中断有关的标志位,并且对中断是否允许做出了判断,而162,163这两个函数知识一般的读写标志位,没有额外的出来,能不能触发中断的标志位都能读取,所以建议在主程序里用162和163,中断程序里用164和165

到这里,这个EXTI的库函数都看完了

对于EXTI的初始化配置,用EXTI_Init函数就行了

b715f176a097404490f882abdf8c7f24.png

里面只有一个参数就是EXTI初始化的结构体,因为EXTI只有一个,所以不需要像GPIO那样

90d96400ec8d4aaea92bdde583e7f2f2.png

看一下说明,第一个参数是EXTI_InitSyruct,它是一个EXTI_InitTyoeDef类型的结构体指针,包含了对于EXTI外设的是配置信息

c4b1f97038d0404cbdf92738887becb4.png

起个变量名叫,EXTI_InitStructure

56dc6e55c4cf4feb9d26b4c2ef4f3d4b.png

第一个参数,EXTI_Line,这个是指定我们要配置的中断线

df318be6c98f4e0e8f7d7f27e941d7cd.png这些就是这个参数的取值,我们需要用PB14所在的第14个线路

6c1c2711a6024595b385dd2dbb461f63.png所以选择EXTI_Line14

e80bce3116964b56932deaa98e900f9a.png第二个参数,EXTI_LINECmd,指定选择的中短线的新状态,这个参数可以是ENABLE和DISABLE,因为要开启中断,所以选择ENABLE

09f2d0c31e0744218f8437adcfcdc571.png

第二个参数就ok了

第三个参数,EXTI_Mode,指定外部中断线的模式,这个参数可以是EXTIMode_TypeDef里面的一个值

跳转页面

f27ba818e3b946babb4c700746c0884b.png52是中断模式,53是事件模式,我们需要的是中断模式

288f1a6a55344864a00f51a19ab35f39.png

第三个参数也就ok了

第四个参数,EXTI_Trigger,指定触发信号的有效边沿

06c74f84d75c4da394ce38602f5ebcd8.png

这个参数可以是这个定义里的一个值,这里写错了应该是EXTITrigger_TypeDef

3cb7f7d3103745839bf89de2447dff4b.png64行上升沿触发,65下降沿触发,66上升沿和下降沿都触发,这个选择跟你的实际需求来,这里选择下降沿触发

3fa7f0993b4c419fa4c9675218e72d81.png

 

7a27147d1eb5437e89aeea48af99ef85.png这样我们的外部中断配置完成了

当前的配置将EXTI的第14个线路配置位中断模式,下降沿触发,然后开启中断,这样PB14的电平信号就能通过EXTI通向下一级NVIC了

现在来执行第五步,配置NVIC

还是先看一下库文件里的函数

5e230e1637834cd5ab0f70610cd7b3d1.pngbf6d5cb2fc884bcdbabd291fdcfbdca0.png8e5eb5dd702b4b408b030b7a100f2936.png196行函数这个函数是用来中断分组的,参数是中断分组的方式

197行函数,这个是根据结构体里面指定的参数初始化NVIC

198行函数,这个是设置中断向量表

199行函数,这个是系统低功耗配置

198和19用的不多先看看就行

我们就用196和197行函数

5e5e9ee4fb83443e9d9bcd1873c17a88.png

在配置中断之前,先指定一些中断的分组,然后使用NVIC_Init初始化NVIC就行了

f0d41b6434044f5891e6e2da33d58d83.pngef4f233b609f4a88860625911ff8bb9a.png37df629006f94ef792f9ae230d58febc.png

6ebce836c342484ca983caa5b4be3346.pnge02a73d47fd04806a86af196a7e42fea.pngb1125a46c2af45aa9d9dfd4a50175bb8.png9d62fd611a8e4851a2d03677cc52d574.pngaf7fff9f049649a484cda25267c7b28e.png这样分组就完成了,另外注意以,这个分组方式整个芯片只能用一种,所以按理说这个分组代码整个工程只需要执行一次就行了

b976bee7f23141a0a4b30caae51adfe5.png72a86a065c634dda9b5328ecd24bc096.png91b8dfa60b0b407ba4f1a11bedc4ed2e.pngd52fc85b3bcb43d49d80d086d96cbf6d.pngbeda3e5ebe64403ab5ed79f53ea7f6df.png525f84708c8b4efd92f5a56146aa9419.pngb6a7fec75ac048d9b1a833ec4acc545a.png

510007e81262428b8de5bf518b7a284a.pnge10fc0327773427881d204e62e6c8f5e.pnge8efdbe2cecb49fcaf930fce2ee9f2c3.pngcc891eb67ca743c2bbb38ce2b2153e0b.png8f01e495dd4c48559728a96075e7a37a.png指定中断通道来开启或关闭

9dcaa4536a8143d4b67e2c732d446758.png6f01070a13de4e59b147f458a2d86b56.pngf6b84e15dbb14612b6c6559c7d9c7c92.png因为是用的GPIOB_Pin14,在10-15的范围内,所以要用这个

76111522ca4d496f9d494a01bf907bec.png

fc837fa3b2cb44df9ea837e67f02d12f.png

然后是IRQChannelCmd,参数可以是ENABLE或者DISABLE,选择ENABLE

01771f6155a44e2ca721bf272f200955.png

这两个参数,是指定所选通道的场站优先级和响应优先级,跳转看看

 

2d8fb0bbfba34047ac93c2756250caa8.png

这个是抢占优先级,这个值可以是0到15

bcbb10c58e2441b787ec91d4b850aa4a.png

具体可以可以参照这个表,Ctrl+F,搜索一下

7cd7b65f039a4f24b762d44cd979d894.png

c967dded0a9e407fa1039d4b6712731a.png

a663a8d400004bceaea62091c1bae715.png

f892c97834464680ad3abaadbab52d62.png

0871b4f1f4c34283ba2bd5b6bc9fac29.png

0eda690acd3146439250945990aba999.png582f8978844844f0ba8b7a904c78c0b8.png6c113d7cb4074132a40eaaa8ead3131d.pngb673d26320e34db8a0e22f0f43d7c266.png720ba85c93e34643a4344878dbf32c60.pngba4f996ba8ca4425b146200f4db577f4.png9a723f3b2c974574ad2ad1237eff5a38.png285c580c978641dcb9f2597c31a071ef.pngca9bfdc7e9084ed6932d1da5f45bb4ea.png2204b5837fbd4e3da37489f1f0807ada.pngc9fb2f6a73234170b5be4578ae52d6f3.png

5f06f33034884b5f835785c5de85ea8e.png

ceb46ddc30214d66a0b90a7cb0932b08.pngc346eeb8f7174362b216c63413fff3ee.png4d61726db4964ffc85e6294be067281a.png2dc69352f1a9462cac1a4dec3b2b4eb7.png4b7d385429c3452aae075ca1de39a470.pngc38bb87e44fc40d4b0428c8921a5b2d1.png726458ed2e7541efb9e27e8a21fedd7f.pngdb8139c9cefa429d9447da070352c7ab.pngf08c7d5d91bd4196bddaa3a0ec0c10a8.png6a40c59eb98341018eac271a407190b5.png2d5d46065b7b42e3a88690f1d8cee9ef.png5c9fde8f28be47de9fa7d29525b61fa7.pnga78f7a7822574405a68a44a6de90ae31.png01d459e67f8642e4b9e0254e965504ab.png3bbb38de4f2040db81816768cd10555e.png

48fb255b2fd24c119eecbb788bc2fa7a.png258082d90e214ab8b73c28a21c0161c7.png2d1586e8aa8d41308f01034ff1d18d2d.png492588acfdc345c19f62a5c69614e4db.png8cf50fb6c7e54c22ad67bcacd608a8c0.pngde2504abc3de4ad8b8675be010f1f0f6.pngc19fb3e61f644405bf558210fb9f6ecb.pnga71ecb3d423f47ad9a19fa248243c6d6.pngde6fee778c0647b6a5450fba00008920.pnga677bb07f023409a82528a48228f5251.png

aa94cd57536e44d7aa76b09c441ef0a3.png

dbf5e0698adf4442a6c8a953e4cdc2bd.png2b8247b70d61414bb74b03b7513f2351.png3767b946209e4fdabb8c26b38b696b8d.pngc8c37e2b38e24303ae580e89d3f7b9ce.png89e6166c31cf4ab3b35d4ead9eb38fe1.pngcffc00af93dd4e278c43dcc7d51430be.png3444b69df0de4bb3a0ac69ef6f8916f1.png4d69336a7ad544f5a8209b703ef4c33f.png0b5e34e4c2704e9384949d734c682ab2.png72c8e6212bf846c79234aa2723a3fa6e.pngea385f3b86ce49179d7b47b1f0611251.png7dc63c95974b4c059b7b96b60fe55d43.pngc34669a69e6541e9850d077674674e4c.png

517e2a74248c4286bf6514f3f7a48905.png

4de48f68fa104f6aa1d11e5daf621fce.png5951b5053f004c10af06610038c17c2d.png71821ecab94a4e56825d7caf6c6a60c7.png

acce4caefa2b4a149d9e440951cdfe72.png可以改一下这里

 

07a5cb4c5fdd4ad48a2d2f494e0a31e5.png51785ea41ef7478c909c5261df8cbd4a.png5814799e85cf41dca4f0c8afb094d759.pngddb8e10cb60b4daf8247cae44f22ed03.png177912fdf1ca40b19efcb7e657c83872.png旋转编码计次

2f520a716eb44a36bce6ba1bc5dc6a8a.png

7234a5909a464a0b960db1dcc5156e9c.pnga9cd6b1db6d747e78725a2fe22a71437.png6ea5839b641140e991f36c275426f21b.png5329d09cb5e441d787f6aca4959ef559.png因为对于这个编码器而言

0bae53e690b1414eb2c495d6772523cf.png2ca9faa2944a48cd888024b805060fb7.pngc6768304bcdf4ea5a8a14003b48a7b7d.png9ab00bc19f784765a08807b0fef5f406.png只不过这样在操作上有一写小瑕疵

d8518da81cfb4b46b8eeffc09435298d.png124bfb756976408c861c8b026daf6076.pngd22f3abd8be743b29297d9d2111383be.png821af0f2d4c6456090aeecb1fbd18e1c.png72716c2b36c445c889318f1bd993801b.pngb318608c5dec4da5b0183f561cc7bb61.pnga77a195296ff4b158ee5edcb5427baf2.png

02359b685ae24eea9890d474da649ba1.png

26240490120e453e87108b8b63197914.png

2130387274f64394a8daefbfa613c43f.png8b2f3069ed5149eba4e77ecf74e98cde.pnged73a11c117f4bd392f4982a40b73341.pngf9b8c2cda4374ba5b712e834e4ce5add.pngc358fcef8dfa4ffbbd097bc606e0926e.png

把14改成0

693fc87c180346bbb94c7f0d6ccf3c75.png复制粘贴一下

364ade5810f447dcb321b97e10eabd69.png

8737762a6c50470aa7dd994f6df07bf3.png5561f6b9dac3415b92bc7f04a8827a33.pngbac08015f55c491baff523da04a59308.png34ce8676158d45f2ba9b7ec28137ad26.png

7ba8494667a24f59a567241fe1506e7b.png6eeebcba5c214eb6b9303cee424c2d31.pngf702ee8cfc9a4e17b3f9baeb76a602a4.pngbb96eb5985ef4b89ba29781527e37e87.png5d26abe1984348408ed873fbf74d4a3d.png57f2260e9b2c4ce28c8411174517ec70.png3d9bba11c24b42b49a92ad3f5bf4beaa.pngfe1cb2124422436b84e2ac2b17e8d162.png3e225ff268ef45d785ecb9f0443b41f2.png7cdc8e5eeae34eeaaf9a39fe142f005c.png2798ffbffa104206b9a9cc52b1011d9e.png5dfed1d9b331496c8139c3f52342b34f.png77ba04482091485eb49e147f4ad28533.pngbfd0c042cd7a47979cc55f34ecbc5c5a.pngf5fd3365576d43e3bd73addd90d1a5ab.png2ec1d296ad9d41f5a81f6523df756d34.pnge2e1a120d77343b5bf9da34235b1f848.png然后复制一下这个函数

6619790703e248bfbebd10d75512c1a3.png1bcb902f79f44a5ab46747732ce85d54.png

改成1

eb51d4c12a054e9893a1f7e96d5570a1.png2d1918c8f2124198b75dc038a99a735c.png3b60d3e80ff245589640bc919530c696.png4610467a6c634e7e8971eec3a181b146.pngb90d1eacf36d42edb1642a0d43a877a6.png5306171dd63e4ec6b4536e83b14ed466.png

4b4baf89c57643d382b11653e772c59e.png

794fa47adba24b8ca406a40acb5e4602.png3a925a4cdcb84f5ebafaa7715d5c64d5.png

62da8ffbaf6e4ac0a2f6b52f5698c831.png4e8189dfc706454483c78b91a2b3c44b.png5d74baaf2cd04791964cfb6037d1fd59.pngc421c4fe49e94892ae0110b83acc434e.pnga3233d8cfc5b412ca4db81b9a5285c43.png8db92fda942049b2862258919a349cd5.png

185d072c11044665a7e3b48da3801a11.png

16d74b0a92e14aacbdb9942cec47140a.png99c3d5e78fbb4b6c8ad6feb2b4cfd4fa.pngc2874754a2ef4e7a86ada6e5d7b36829.pngc0d80f1db2e54a8d8622397e10cac8b5.pngd5aef7da5f27408cae5318e6ec98ecf4.pnga6ad16bd54e8478d8c3ce853dae6f9cc.png71c27786d3c9400d92862c10f26f5d5e.png7b68217d48174fe092344a16a3ca41dd.pngb25114e9e63c4e2081b5f079043e9b16.png55ec6e7e26524866abacc69d63cd945f.pngbffd266d4f25458b8154deb207c1d013.png

357d35aed5674b6e95ee861bef8d5569.png9ee184ebaf8b4d709829c3300af96e49.png

a14751e6ac6d4f2782ebf92723bdbcca.png

最后返回Temp,然后就完成了

bfbb80d49c6c4f4f85d36316d3c73105.png

5209c4dc3e9c4de2b91196ec36d24b05.pngf3c91665d2d842d196c43dffe309fb98.pnga4ab0b7766c64bb7997f1ee8ae489758.png7bbf7471bd984fe895fc7a224ab6e8d4.pnge74ee902579046b4bb46784828b94104.png219ed9a1df43428ab9200b1c84dd6f6f.png76da9d60b9df45a9a1037a0b6d306be2.png

中断编程的建议:

de3f4e6947b74faf8e42a84e138cf11a.pngbd5cceb228504b88aa11920631228c2b.pnge4ca91c5eb1a4d3a93a4e871836229a9.pngaa481342704b4bbb94f4aa00315eeccf.pngc5ad8fbd565548caba26824194c6b587.png7eb8b085ad9b4f29bdd6f3653466c94d.pnga06bd484a3444ea79931e6d4ae2904cf.pngb2da95b228a24fc996d1f687459cf6dd.png7f8d1cb7d98b4314ab2ac13a553faf1e.pngf1b4d903a6054dd89828f2a61b9c451f.png3ab21871dfb2433b99655b2334d9ab05.pngc298254a41c142e7ba02ae4922d51b7f.png52de6163a93c4a8a8ce1dd65201048e1.png5dccdcdd5361402c9db430557d9fed47.pngcf5e679a689540e5bc886ac26b481f37.png30580b7d3f37490d80bc45ff24fc8879.png7e072f4126bb48259e4130231427600d.png08b64f437ee5452ea0fa54a4d8a7c9cf.pngb38abe79ff0d4fd6bae3dfeaa8b3df04.pngea964bb72e0e46068160a217985d47bd.pngd8806711211c49cbad66ce6047581f85.png858d9faafa074b9fa0601fde650f0cd4.png

464a5389236e4c2f834613fa54b32728.png

4a74f0dfee214201af03be2adef6905c.pnge7e1243b186b415896d828702b994085.png134f733848f14dd0a495713b9b1a6b44.pngc13324fb9c664634baecd4b8f1d0eed0.pnge6df6eda43df425287ea5804c0e7a4dc.png5395e8376d17401d87b7a34ea7985884.png59e8d6a608154205928b91d1b1489dfc.png

 

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值