完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教下大家,上电后延时5S(防swim脚锁死),再把SWIM脚设成输出脚,让它能输出高低电平。但实测,这脚一直是高电平。是否我下面的设置,不足以让SWIM脚成功设成输出?
/* 定义TXenable IO PORT与PIN SWIM */ #define TXenable_GPIO_PORT (GPIOD) #define TXenable_GPIO_PINS (GPIO_PIN_5) void SWIMset_IO(void) { /* 配置TXenable IO 为输出模式 */ GPIO_Init(TXenable_GPIO_PORT, (GPIO_Pin_TypeDef)TXenable_GPIO_PINS, GPIO_MODE_OUT_PP_HIGH_SLOW);//上电时不发射 } /** * @函数名 AutoCHK * @功 能 * @参 数 无 * @返回值 无 */ void AutoCHK(void) { GPIO_WriteLow(TXenable_GPIO_PORT,(GPIO_Pin_TypeDef)TXenable_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); GPIO_WriteHigh(TXenable_GPIO_PORT,(GPIO_Pin_TypeDef)TXenable_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); GPIO_WriteLow(TXenable_GPIO_PORT,(GPIO_Pin_TypeDef)TXenable_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); GPIO_WriteHigh(TXenable_GPIO_PORT,(GPIO_Pin_TypeDef)TXenable_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); } void main(void) { IoSetUp_Init(); /* LED初始化 */ LED_Init(); GPIO_WriteLow(LED_GPIO_PORT,LED_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); GPIO_WriteHigh(LED_GPIO_PORT,LED_GPIO_PINS); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); Delay(0xFFFF); if(!GPIO_ReadInputPin(OUTPUTselect_GPIO_PORT, (GPIO_Pin_TypeDef)OUTPUTselect_GPIO_PINS)) OUTPUTmode=RESET;//RESET:有物高 else OUTPUTmode=SET; // SET: if ((GPIO_ReadInputData(EXti_GPIO_PORT) EXTI_GPIO_PINS) == 0x00)//无物 { GPIO_WriteHigh(LED_GPIO_PORT, LED_GPIO_PINS); if(OUTPUTmode==RESET) GPIO_WriteLow(OUTPUT_GPIO_PORT,OUTPUT_GPIO_PINS); else GPIO_WriteHigh(OUTPUT_GPIO_PORT,OUTPUT_GPIO_PINS); } else //有物 { GPIO_WriteLow(LED_GPIO_PORT, LED_GPIO_PINS); if(OUTPUTmode==RESET) GPIO_WriteHigh(OUTPUT_GPIO_PORT,OUTPUT_GPIO_PINS); else GPIO_WriteLow(OUTPUT_GPIO_PORT,OUTPUT_GPIO_PINS); } /* 外部中断初始化 */ EXTI_Init(); /* 使能总中断 */ enableInterrupts(); SWIMset_IO(); AutoCHK(); while (1) { ; } } |
|
相关推荐
1个回答
|
|
可能的原因包括:
1. SWIM脚可能已被锁死。在STM8S001J3中,为了防止意外的SWIM编程,SWIM脚在上电时默认为输入模式。要解锁SWIM脚并使其可以配置为输出模式,需要进行一系列特定的事件和操作,才能确保其解锁。 2. 在设置SWIM脚为输出模式之前,可能需要先停用SWIM功能。这通常可以通过设置作为SWIM接口的JTAG控制器的相应寄存器来实现。 3. 您的代码中可能存在其他问题。请确保您在设置SWIM脚之前正确初始化相关外设和引脚,并检查您的代码是否存在任何错误。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 14:49 , Processed in 0.731262 second(s), Total 80, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号