我已经在 cp 文件和 c 文件中尝试过以下代码: 在 c 文件中、它可以正常工作、但 CPP 文件不能正常工作。 我添加了来自 LED 类的代码、以便更轻松地进行测试。
#include "TM4C129.h" //器件标头
#define LED_NUM 4. /*用户 LED 的数量 //
void LED_Initialize (void);
void LED_ON (uint32_t num);
void LED_off (uint32_t num);
void LED_out (uint32_t 值);
空延迟 (uint32_t dlyTicks);
const static uint32_t led_mask[]={1UL << 1、1UL << 0、1UL << 4、1UL << 0};
// static unsigned int ledState = 0;
volatile static uint32_t msTicks; /*计算1ms 时间技巧 */
void delay (uint32_t dlyTicks)
{
uint32_t curTicks;
curTicks = msTicks;
while ((msTicks - curTicks)< dlyTicks){__NOP();}
}
int main()
{
LED_Initialize();
SystemCoreClockUpdate(); /*获取内核时钟频率*/
SysTick 配置(SystemCoreClock /1000ul); /*设置 SysTick 1毫秒*/
while (1)
{
LED_ON (0);
延迟(5000);
LED_OFF (0);
延迟(5000);
}
}
空 SysTick 处理程序(空)
{
msTicks++;}/*--><!--kadov_tag{{</spaces>}--><!--kadov_tag{</spaces>}}-->
初始化 LED 引脚(GPION1、GPION0、GPIOF0、GPIOF4)
*--------------- //
void LED_Initialize (void){
//启用时钟和初始化 GPIO 输出*/
sysctl->RCGCGPIO |=(1UL <<12)|(1UL <<5);//启用 GPIO 的时钟*/
GPION->DIR = LED_MASK[0]| LED_MASK[1];// PN1、PN0为输出 */
GPION->DEN = LED_MASK[0]| LED_MASK[1];/* PN1、PN0是数字函数。 /GPIOF_AHB->DIR
|= LED_MASK[2]| LED_MASK[3];/* PF4、PF0为输出 */
GPIOF_AHB->DEN |= LED_MASK[2]| LED_MASK[3];/* PF4、PF0是数字函数。 */
}/*-------------------------------------------------------
打开请求的 LED
的函数*--------------------------------------------------------------- //
void LED_ON (uint32_t num){
if (num < LED_NUM)}{
switch (num){
案例0:GPION -> DATA = led_mask[num];break;
案例1:GPION -> DATA = led_mask[num];break;
情况2:GPIOF_AHB->DATA |= LED_MASK[num];break;
案例3:GPIOF_AHB->DATA |= LED_MASK[num];break;
}
}/*--><!--kadov_tag{</spaces>}}-->
关闭请求的 LED
的函数*--------------------------------------------------------------- /void
LED_OFF (uint32_t num){
if (num < LED_NUM)}{
switch (num){
案例0:GPION -> DATA &=~led 掩码[num];break;
案例1:GPION -> DATA &=~led 掩码[num];break;
案例2:GPIOF_AHB->DATA &=~LED_MASK[num];break;
案例3:GPIOF_AHB->DATA &=~LED_MASK[num];break;
}
}/*--><!--kadov_tag{</spaces>}}-->
将值输出到 LED 的函数
*------------------ //
void LED_OUT (uint32_t value){
int i;
for (i = 0;i < LED_NUM;i++){
IF (值和(1<<i)) {
LED_ON (I);
} 否则{
LED_OFF (I);
}
}