鉴于上面代码逻辑运算太难懂,下面用VS运行C++代码说明,分两种:
1--指定某一类io口,比如是GPIOF就用5代替,然后循环各个(0~15)io口:
// 配置寄存器EXTICR循环io口代码测试.cpp :
//
#include <iostream>
int main()
{
int EXTI_PinSourcex=0;
uint32_t tmp = 0x00; tmp;
uint32_t EXTICR[4];
for (EXTI_PinSourcex; EXTI_PinSourcex < 0x10; EXTI_PinSourcex++)
{
tmp = ((uint32_t)0x0F) << (0x04 * (EXTI_PinSourcex & (uint8_t)0x03));//
EXTICR[EXTI_PinSourcex >> 0x02] &= ~tmp;
std::cout << EXTI_PinSourcex / 4 << "-" << std::hex << tmp << "-" << std::hex << EXTICR[EXTI_PinSourcex >> 0x02] << "/-";
EXTICR[EXTI_PinSourcex >> 0x02] |= (((uint32_t)5) << (0x04 * (EXTI_PinSourcex & (uint8_t)0x03)));//A
std::cout << EXTI_PinSourcex << "--";
std::cout << std::hex << EXTICR[EXTI_PinSourcex >> 0x02] << "\n";
EXTICR[EXTI_PinSourcex >> 0x02] = 0xcccccccc;
// printf("%02X ", EXT