完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我正在使用廉价的中国板和STM8103F3芯片。
我想使用PC4,PC5,PC6和PC7引脚作为输入连接做键。 使用PC5-PC7没有问题。我将它们配置为带中断的上拉输入,但PC4不同。 如果我为此引脚设置了中断,我的程序挂起。 我取消设置中断并读取GPIOC-> IDR = 0xe8,这意味着PC4 IDR位始终为0。 我还读取CLK-> CCOR = 0x00和tiM1-> CR1 = 0x00,因此TIM1和输出时钟被禁用。 但早些时候我使用ADC1和模拟输入3(端口D2; ADC1-> CSR | = 0x03;) 我不使用模拟输入2,这是PC4的替代功能。 我检查了引脚上的电压= 3,29V(所以上拉工作)。 那么如何强制PC4像其他PC5-PC7引脚一样在另一个通道上工作ADC1? 以上来自于谷歌翻译 以下为原文 I am using cheap Chinese board with STM8103F3 chip. I want to use PC4,PC5,PC6 and PC7 pins as inputs connected do keys. With PC5-PC7 there is no problem. I configured them as pull-up input with interrupt, but PC4 is different. If I set interrupt for this pin, my program hungs. I unset interrupt and read GPIOC->IDR = 0xe8, which means that PC4 IDR bit is always 0. I read also CLK->CCOR =0x00 and TIM1->CR1 =0x00 so TIM1 and output clock is disabled. But earlier I use ADC1 with analog input 3 (port D2; ADC1->CSR|=0x03;) I don't use analog input 2 which is alternate function for PC4. I checked voltage on the pin = 3,29V (so pull-up works). So how to force PC4 to work like other PC5-PC7 pins with working ADC1 on another channel? |
|
相关推荐
6个回答
|
|
你好,
您是否有可能与我分享部分不工作的代码(IO配置)?如何查看此MCU的备用功能配置(选项字节设置)? 先谢谢你, 最好的祝福, 阿图尔 以上来自于谷歌翻译 以下为原文 Hello, Would it be possible for you to share with me part of not working code, please (IO configuration)? How does look your configuration of alternate functions of this MCU (option bytes settings)? Thank you in advance, Best Regards, Artur |
|
|
|
|
|
|
|
检查数据表以查看该引脚上可能有哪些其他功能,默认情况下或通过选项字节
以上来自于谷歌翻译 以下为原文 Check the datasheet to see what other functions may be active on that pin, by default or via the option bytes |
|
|
|
我没有更改选项字节,但是我全部读取它们:OPT-> OPT0到OPT-> OPT7等于0x00,这表示没有打开备用功能。
PIN 14主要功能(复位后)是PC4和备用功能:可配置时钟输出/定时器1 - 通道4 /模拟输入2.我不使用TIM1和时钟输出,启用我在第一篇文章中提到的字节。 IO引脚配置很简单: #define LEFT_PIN 0x10 GPIOC-&gt; DDR&amp; = ~LEFT_PIN; //设置为输入 GPIOC-&gt; CR1 | = LEFT_PIN; //上拉输入 // GPIOC-&gt; CR2 | = LEFT_PIN; &lt; - 有问题的线路启用中断 我错过了什么,但是什么? 以上来自于谷歌翻译 以下为原文 I didn't change option bytes, but I read them all: OPT->OPT0 to OPT->OPT7 equals 0x00 which mean no alternate functions is turned on. PIN 14 main function (after reset) is PC4 and alternate function: configurable clock output/ Timer 1 -channel 4 /Analog input 2. I don't use TIM1 and clock output, Enabling bytes I mentioned in first post. IO pin configuration is simple: #define LEFT_PIN 0x10 GPIOC->DDR&=~LEFT_PIN ;//set as input GPIOC->CR1|=LEFT_PIN;//pull-up input // GPIOC->CR2|=LEFT_PIN; <- problematic line enabling interrupt I missed something, but what? |
|
|
|
你好,
我已经确定了一个有罪的人在您的ADC配置期间,您已禁用所有模拟输入通道的施密特触发器,而不是仅为已使用的通道关闭它。在这种情况下,PC4也禁用了此选项。如果您查看参考手册(GPIO部分,端口框图),您将看到一旦施密特触发器被禁用,引脚到输入数据寄存器或外部中断控制器都没有信号。 请查看ADC部分(参考手册中的24.11.10)中这些寄存器的描述: '比特7:0 TD [7:0]施密特触发器禁用低电平 这些位由软件设置和清除。当TDx位置1时,它会禁止I / O端口输入 。 这需要降低I / O端口的静态功耗。 0:启用施密特触发器 1:施密特触发器禁用'作为解决方案请更换线路: ADC1-> TDRH = 0xff; //施密特触发器禁用高电平 ADC1-> TDRL = 0xff; //施密特触发器禁用低电平: ADC1-> TDRH = 0xff; //施密特触发器禁用高电平 ADC1-> TDRL =; //施密特触发器禁用低电平()应该有帮助。 最好的祝福, 阿图尔 以上来自于谷歌翻译 以下为原文 Hello, I have identified a guilty guy During your ADC configuration you have disabled Schmitt trigger for all analog input channels instead of turning it off only for used ones. In this case PC4 has disabled this option as well. If you have a look at reference manual (GPIO section, port block diagram) you will see that once Schmitt trigger is disabled, no signal is coming from the pin to input data register nor to external interrupt controller. And please have a look at the description of those registers in ADC section (24.11.10 in reference manual): 'Bits 7:0 TD[7:0] Schmitt trigger disable low These bits are set and cleared by software. When a TDx bit is set, it disables the I/O port input . This is needed to lower the static power consumption of the I/O port. 0: Schmitt trigger enabled 1: Schmitt trigger disabled'As a solution please replace lines: ADC1->TDRH=0xff;// Schmitt trigger disabled high ADC1->TDRL=0xff;// Schmitt Trigger disabled lowwith those ones: ADC1->TDRH=0xff;// Schmitt trigger disabled high ADC1->TDRL=;// Schmitt Trigger disabled low ()It should help. Best regards, Artur |
|
|
|
你好,
这是正确的答案。 非常感谢你 ! 以上来自于谷歌翻译 以下为原文 Hello, That's correct answer. Thank You very much ! |
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2742 浏览 1 评论
3244 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1813 浏览 1 评论
3653 浏览 6 评论
6044 浏览 21 评论
1342浏览 4评论
203浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
356浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
446浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
275浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 08:18 , Processed in 1.122306 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号