|
/IO初始化/ RCC->APB2ENR |= 0x0000001D; //使能GPIOA、GPIOB、GPIOC和AFIO AFIO->MAPR &= 0xF8FFFFFB; AFIO->MAPR |= 0x02000000; //开启SW-DP,关闭JTAG-DP AFIO->MAPR |= 0x00000004; //USART1映射至PB6、PB7 我的部分代码如上,主要功能是对SW-DP和USART1进行重映射,但是在AFIO->MAPR |= 0x01000000;这一句出现了错误。
我想要实现启用SW-DP和关闭JTAG-DP,应该写入010,但是写入该行后,却变成了100,如下图:
这就导致我的调试窗口直接断开了连接。 而且我用库函数LL_GPIO_AF_Remap_SWJ_NOJTAG();写入时也是一样的情况,其次我写入001时,也会变成010。 但是AFIO->MAPR |= 0x00000004;这行却不会出现类似问题。 所以不知道是怎么回事,想请教一下各位大佬。 |
有没有大佬知道这个电路输出为什么只有1V多?按数据手册接的,设置外部输出,输出值也不对
有没有大佬有1602的HAL库驱动
stm32 spi从机实现bissc通信(在线等)
stm32 定时器外部时钟1的TI1FP1及TI2FP2的设置问题
STM32F1定时器中触发信号TRC的来源及选择配置是怎么样的
输入捕获测频率返回异常?
STM32F103 bug
怎么将keil工程更换为vscode工具链?
HAL_UART_Receive_IT不管设置size是多少,我串口一次性发4个字符,最后保存在buffer的也只有一个元素
Error in final launch sequence: Failed to execute MI command: target remote localhost:61234
微信公众号
手机版
[md]虽然这个解决了读取值与写入值不一样的问题,但是没有解决为什么写入010,会导致调试退出问题
该寄存器的这3个位是只写的,所以你按照寄存器的定义正确写入即可。
不过,根据我刚才测试来看,按照下面做法似乎可以读。
Value_Mapr0]= AFIO->MAPR ;
Value_Mapr1]= AFIO->MAPR ;
Value_Mapr2]= AFIO->MAPR ;
这三个位确实不可以读,我就算设置的时010,读回来的还是100,好像会左移一位;其次在写入的时候,很容易出错,如果没有按照正确的方式写入,就算写入的是010,也会出现调试断开的情况;
代码所示有两种写入方法,写入数据都是一样的,但是如果用注释里面的代码进行写入,就会写入出错,出现调试断开的情况。我百思不得其解,你也可以试一下。