| 
 |||||||
| 
    Как освободить ножки PB3, PB4, PA15 на STM32 BluePill через CMSIS 
        
        
		  Время создания: 11.10.2022 15:40		  
		 
		
		 		
		
		 		 
		  Текстовые метки: stm32, bluepill, CMSIS, ножки, порт, PB3, PB4, PA15, освободить, JTAG, AFIO		  
		 		
		
				  
		    Раздел: Компьютер - Аппаратное обеспечение - Микроконтроллеры ARM		   
		
		
		 		 
		  Запись: xintrea/mytetra_syncro/master/base/1665492004pi2bp3es78/text.html на raw.githubusercontent.com		  
		 
		
				  
  | 
 |||||||
| 
    | 
 |||||||
| 
    При разработке под микроконтроллер STM32F103C8T6 (и ему подобные) можно наткнуться на ситуацию, что некоторые ножки не настраиватются на режим ввода/вывода и не работают как положено. Обычно это касается ножек, на которые разведен JTAG. По-умолчанию все ножки не подключены к дополнительному оборудованию, а вот JTAG-овые сконфигурированы на работу JTAG, чтобы была доступна отладка. Если отладка по JTAG ненужна, например когда прошивание и отладка делается по SWD-разъему, то эти ножки можно переконфигурировать в обычные порты ввода-вывода. Обычно это ножки PB3, PB4, PA15. В интернете на профильных форумах говорится, что для "освобождения" ножек PB3, PB4, PA15 нужно настроить бит SWJ_CFG регистра AFIO_MAPR для отключения JTAG. Т. е. оставить только порт отладки SWD для отладки кода. И нужно не забыть включить тактирование AFIO в регистре RCC. Если используется библиотека CMSIS, то код может быть следующий: // Отключение JTAG для освобождения PB3, PB4, PA15 AFIO->MAPR |= AFIO_MAPR_SWJ_CFG_JTAGDISABLE; // Дополнительная настройка для освобождения PA15 // (среди прочих выставляется RCC_APB2ENR_AFIOEN) RCC->APB2ENR = RCC_APB2ENR_USART1EN | RCC_APB2ENR_TIM1EN | RCC_APB2ENR_SPI1EN \ | RCC_APB2ENR_ADC1EN | RCC_APB2ENR_ADC2EN | RCC_APB2ENR_AFIOEN \ | RCC_APB2ENR_IOPDEN | RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPBEN \ | RCC_APB2ENR_IOPAEN; Если еще точнее, то такой код инициализации точно работает:     // Включение тактирования портов GPIOA, GPIOB, GPIOC Начинают работать все три проблеммные ножки: PB3, PB4, PA15. Оказывается, очень сильно влияет последовательность инициализации. Вначале надо разрешать тактирование AFIO, и только потом отключать JTAG. В другой последовательности ничего не настроится.  | 
 |||||||
| 
    
 
 Так же в этом разделе:
  
  
  | 
 |||||||
      
   | 
 |||||||
   
   
  | 
 |||||||
   
  |